将对象字符串传递给javascript函数

时间:2010-02-03 17:15:57

标签: javascript string object

我正在尝试传递这样的字符串:

{"key":["value"],"key2":undefined,"key3":undefined,"key4":undefined,"key5":"value"}

这样的javascript函数:

<a href="#" onClick="myFunction(myString);">

但无法获得逃避权利。有没有办法将该对象字符串传递给函数,还是需要转换某些东西?

问候, Select0r

4 个答案:

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