我正在尝试传递这样的字符串:
{"key":["value"],"key2":undefined,"key3":undefined,"key4":undefined,"key5":"value"}
这样的javascript函数:
<a href="#" onClick="myFunction(myString);">
但无法获得逃避权利。有没有办法将该对象字符串传递给函数,还是需要转换某些东西?
问候, Select0r
答案 0 :(得分:1)
尝试:
var myString = '{"key":["value"],"key2":undefined,"key3":undefined,"key4":undefined,"key5":"value"}';
修改强>
根据您最近的评论,我回到了浏览器并试了一下(适合我):
<a href="#" onClick="myFunction({'key':['value'],'key2':undefined,'key3':undefined,'key4':undefined,'key5':'value'});">
更改意味着它不再作为字符串传递,而是作为myFunction的对象参数传递。
答案 1 :(得分:1)
正如Naeem所说,你可以将字符串括在一个引号中。单引号和双引号之间的区别是:
单引号:
\'
双引号:
\"
答案 2 :(得分:1)
我找到了一个解决方案,Naeem Sarfraz让我走上正轨 - 它不会赢得选美比赛,但它有效:
由于我可以在我所处的上下文中执行PHP(但是IE6会忽略Javascript),我在PHP上使用单/双引号进行了几次替换。
$data = stripslashes(unserialize($data));
$data = addcslashes($data, "'");
$data = str_replace('"', "'", $data);
这将删除所有斜杠,仅为单引号添加斜杠,最后用单引号替换双引号。
现在myString处于一种状态,可以在没有引用冲突的情况下传递给onclick中的Javascript函数:
<a href="#" onClick="myFunction(<?php print $data; ?>);">
感谢您的贡献!
答案 3 :(得分:0)
如果您可以在此<a>
元素之前生成代码,则可以尝试以下操作:
<script type="text/javascript">
var myObj = {"key":["value"], "key2":undefined, "key3":undefined, "key4":undefined, "key5":"value"};
</script>
<a href="#" onClick="myFunction(myObj)">