我正在尝试将一组数据从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..
}
答案 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;中用单引号替换双引号; 对我来说就像一个魅力。