Php 使用jquery的Javascript中的参数
我试图将一个参数从php传递到html中的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
$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);" />