我正在尝试将一个参数从php传递到我的html里面的javascript函数中。这是可能吗?这是我到目前为止所得到的,但一旦达到这个条件,它似乎会崩溃:
$str="<input type='submit' value='-' onclick='Call(".$row['field1'].");'/>";
我希望我不必为此找到解决办法。
感谢。
编辑: 这是我试图调用的函数
function Call(stuff)
{
alert(stuff);
$.get('reports.php',
{'param':'section', 'text':stuff},
function(returned_data)
{
alert(returned_data);
});
//alert('end');
}
这是我用。填充表格的函数。
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');
}
这是我发回的人口表:
$str.= '<tr>';
$str.='<td bgcolor="#ffffff">' . $row['stuff'] .'</td>';
$str.='<td><input type='submit' value='-' onclick="Call('$row['stuff']');"/></td>';
$str.='</tr>'; //accumulate table
我似乎无法获得Call()的返回值,并且警报甚至不会弹出
答案 0 :(得分:1)
尝试:
$str='<input type="submit" value="-" onclick="Call(\''.$row['field1'].'\');"/>';
我敢打赌,如果它是一个字符串值
,你需要围绕该值的引号例如,如果$row['field1'] = 'test';
则:
您的版本:<input type='submit' value='-' onclick='Call(test);'/>
会失败,因为test
不是有效变量
我的版本<input type="submit" value="-" onclick="Call('test');"/>
可以工作,因为'test'
是一个字符串
答案 1 :(得分:0)
你想要做什么是可能的,而不可能将一个参数从JavaScript传递给PHP函数。
当你说它遇到这种情况后崩溃了,你的意思是当你点击页面上的输入时?在这种情况下,它是JavaScript语法中的错误。我会尝试使用Firebug和Firefox来追踪问题。
我的第一个猜测是Call()方法中没有引号。所以你这样做:
Call(something)
它应该是这样的:
Call('something')
答案 2 :(得分:0)
这是可能的,但我会非常小心将PHP echos和javascript内联到字符串,因为你需要正确地转义javascript数据类型
在您的示例中,$row['field1']
可能来自数据库,因此它是一个字符串,因此您需要在javascript调用中用引号括住该值。 但这不是全部,因为如果你的字符串中有引号,或者需要在javascript中转义的换行符之类的特殊字符怎么办?那么html逃脱呢?
更好的方法是使用json_encode()
在一个位置导入您的JavaScript值,然后使用您的变量。
E.g:
<?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);" />