我有以下 html 组件,我向其中传递了一个 Json:
<a href="javascript:abreModal('{ 'name':'John', 'age':'30', 'city':'New York'}');">
Pulsador
</a>
和 Javascript 函数:
function abreModal(text) {
//var text = '{ "name":"John", "age":"function () {return 30;}", "city":"New York"}';
obj = JSON.parse(text);
alert(obj.name);
}
萤火虫给我的错误是:
SyntaxError: missing ) 在参数列表之后
我怀疑错误出现在abreModal(...)
我试图更改引号而没有结果的引号中。
有什么建议吗?
您的字符串位于我输入的两个标记之间,接下来您键入
name
的是逗号 (,
) 或右括号。我建议您不要发送 Json,而是发送对象:所以你不需要解析或任何东西:
请记住,Json 用于在服务器和客户端之间交换数据,将对象转换为 Json 然后在同一个脚本中解析它没有多大意义。
现在,如果情况是您从其他地方收到该 Json,那么我建议您在发送它之前解析它并发送包含它的变量。
只需删除引号并按原样传递对象,这样您就可以直接在函数中访问它,即:
你有这个:
只需删除对象周围的引号
而且您不再需要解析任何内容,因为您将拥有一个可以使用和访问其属性的文字对象。
如果您确实需要为每个参数传递一个字符串
JSON
,那么:您可以打印
JSON
URI 的编码,这样单引号 ('
)、双引号 ("
) 和任何其他特殊字符都会被转义,从而防止 HTML 中断。在
JS
你可以使用encodeURIComponent
例子:
一个好的做法是使用
onclick
单引号给其他人,您发送的 JSON 不需要解析。