将jSON(带引号)的php字符串传递给onclick函数

时间:2014-02-06 12:00:31

标签: javascript php json onclick

我正在尝试将一组数据从php传递到java脚本以获取“onclick”事件。 我是通过将数组数据转换为JSON字符串来实现的,以便在js函数中将其解析回来并对其进行处理。

问题是JSON字符串包含双引号,因此双引号会破坏html字符串(Uncaught SyntaxError:Unexpected token ILLEGAL)时会出现错误。我确实看到了几个与此类似的问题,但没有找到我需要的解决方案,或者我可能没有理解正确的解决方案。所以我带着具体的案例把它带到这里。

<?php 
    ..some php code here..
    $aData = array("You","Me",76,array(3,6));
    $sJSONstr = json_encode($aData);
?>

<input type="button" name="formSubmit" value="Delete" onclick="analyze('<?php echo $sJSONstr; ?>')">

 <?php 
    ..some php code here..
 ?>

和js函数如下:

function analyze(i_sInputDataJSONStr) 
{   
var aInputData = JSON.parse(i_sInputDataJSONStr);

    .. So something with the input data array..
}

3 个答案:

答案 0 :(得分:3)

对onclick属性使用单引号而不是双引号。单引号与双引号同样有效。

还有一件事,因为你已经有了JSON格式的数据,所以没有必要把它作为一个字符串放在analyze函数调用中,因为你的JSON数据是一个有效的JavaScript数组(这就是JSON)代表:JavaScript Object Notation)。 因此,您不必在analyze函数声明中解析输入字符串。

考虑以下示例,这是完全有效的代码。

<?php
    $arr = ["Hello", "World"];
    $json = json_encode($arr); // $json = '["Hello","World"]'
?>
<div id="myDiv" onclick='doSomething(<?php echo $json; ?>)'>Click me</div>

<script type="text/javascript">
function doSomething(data){
    for (var i = 0; i < data.length; i++) {
        alert(data[i]);
    }
}
</script>

答案 1 :(得分:0)

创建一个javascript字符串并传递它:

<script type="text/javascript">
var myjson = '<?php echo $sJSONstr; ?>';
</script>

然后:

onclick="analyze(myjson)"

答案 2 :(得分:-1)

<input type="button" name="formSubmit" value="Delete" onclick='analyze(<?php echo $sJSONstr?>)'>

在onclick =&#39;&#39;中用单引号替换双引号; 对我来说就像一个魅力。