使用jquery在Javascript中的参数

时间:2011-11-29 17:28:15

标签: php javascript jquery html

我正在尝试将一个参数从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()的返回值,并且警报甚至不会弹出

3 个答案:

答案 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);" />