Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用jquery的Javascript中的参数_Php_Javascript_Jquery_Html - Fatal编程技术网

Php 使用jquery的Javascript中的参数

Php 使用jquery的Javascript中的参数,php,javascript,jquery,html,Php,Javascript,Jquery,Html,我试图将一个参数从php传递到html中的javascript函数中。这有可能吗?这是我目前得到的,但一旦达到条件,它似乎就会崩溃: $str="<input type='submit' value='-' onclick='Call(".$row['field1'].");'/>"; 这就是我用来填充表的函数 function PopTable() { alert('end'); document.getElementById('table

我试图将一个参数从php传递到html中的javascript函数中。这有可能吗?这是我目前得到的,但一旦达到条件,它似乎就会崩溃:

$str="<input type='submit' value='-' onclick='Call(".$row['field1'].");'/>";
这就是我用来填充表的函数

function PopTable()
    {
        alert('end');
        document.getElementById('table').innerHTML = 'Loading...';
        $.get('reports.php',
        {'param':'getstuff'},
        function(returned_data)
        {
            document.getElementById('table').innerHTML = returned_data; // Clear the select
        });
        alert('end');
    }
这是我要发送回表的php:

$str.= '<tr>';
$str.='<td  bgcolor="#ffffff">' . $row['stuff'] .'</td>';
$str.='<td><input type='submit' value='-' onclick="Call('$row['stuff']');"/></td>';
$str.='</tr>';  //accumulate table
$str.='';
$str.=''$行['stuff'].';
$str.='';
$str.=''//累积表
我似乎无法获取Call()的返回值,警报甚至不会弹出

请尝试:

$str='<input type="submit" value="-" onclick="Call(\''.$row['field1'].'\');"/>';
$str='';
我敢打赌,如果值是字符串值,则需要在其周围加引号

例如,如果
$row['field1']='test'然后:

您的版本:
将失败,因为
test
不是有效变量

我的版本
会起作用,因为
'test'
是一个字符串

您试图做的是可能的,而不可能将参数从JavaScript传递到PHP函数中

当你说它一旦达到条件就会崩溃,你是说当你点击页面上的输入时?在这种情况下,这是JavaScript语法中的错误。我会尝试在Firefox中使用Firebug来追踪这个问题

我的第一个猜测是Call()方法中没有引号。所以你要这么做:

Call(something)
应该是这样的:

Call('something')

这是可能的,但我会非常小心地将PHP回声和javascript与字符串内联,因为您需要正确地转义javascript数据类型

在您的示例中,
$row['field1']
可能来自数据库,因此它是一个字符串,因此您需要在javascript调用中用引号括住该值。但这还不是全部,因为如果字符串中有引号,或者像换行符这样的特殊字符需要在javascript中转义,该怎么办?那么html转义呢

更好的方法是使用
json\u encode()
在一个地方导入javascript值,然后从那里使用变量

例如:


var jsrow=;

这是绝对可能的,你需要发布你得到的错误,虽然没有错误,也没有对按下按钮的反应。浏览器中显示的带有“查看源代码”的
元素生成的html是什么?如果onclick的javascript有语法错误,这就解释了为什么不调用它。我仍然认为这是一个问题。是的,你是对的。这是一个逃避问题。早些时候,我误解了你逃跑的意思。ThanksI似乎无法让字段传递参数,我不想转义任何字符,因为稍后我将使用它再次查询数据库。让我更新我的原始答案。您需要转义字符,以便javascript可以使用它们,然后用html表示。这一要求无法回避。此外,您更新的问题使您更不清楚您遇到了什么错误或问题…现在检查一下,它应该更新。我不确定我是否使用了与您相同的php方法。这是我web开发的第4天,所以我还没有完全理解。这一天确实有意义,但我想我还没有完全理解我的问题,无法用这个解决方案来解决它试试:
$str=“”
如果希望在PHP变量中使用文字引号,则必须使用反斜杠对其进行转义。例如,
echo”鲍勃说“嗨”
将导致分析错误,因为字符串在遇到“hi”之前的引号时结束。回应这样一句话的正确方式是
echo“Bob说”hi“'
来包装我的字符串,当我想在该字符串中加一个引号(
'
)时,我必须将其转义。(例如:
'let's go'
是有效的,而
'let's go'
不是因为PHP将其视为
'let'
字符串,然后是
s go'
,这毫无意义。)
Call('something')
<?php
$jsonrow = json_encode($row);
?>
<script type="text/javascript">
var jsrow = <?=htmlspecialchars($jsonrow);?>;
</script>
<?php // some time later... ?>
<input type="submit" value="-" onclick="Call(jsrow.field1);" />