0

以下是触发语法错误(unexpected identifier在 Chrome 和missing ] after element listFirefox 中):

infowindow.setContent('<h3>'+locale+' ('+hour+':00): $'+s.total+'</h3><img src="'+fname+'" onclick="open_dialog('+flot_data+');" style="cursor:pointer;" />');

具体来说,'+flot_data+'onclick="open_dialog('+flot_data+');". 删除该位会删除语法错误。

Firebug 指向flot_data它所代表的(字面意思) [object Object](它指向O第二个Object中的 .json 是由 PHP 生成的json_encode,所以我不认为 json 格式错误(我在这个应用程序的其他地方也能够成功操作所有我在这里尝试使用的这个对象的部分)。

我尝试离开 onclick 并注释掉我的open_dialog函数的内容,以确保不会在其中触发语法错误。而且,我尝试将open_dialog()函数的内容直接复制到 onclick 中,如下所示:
onclick="$.plot($(\'#graph\'),'+flot_data+');" (onclick 包含在''并使用"",所以我不得不使用转义的单引号)

我复制/粘贴了传递给它的数据setContent并在小提琴中对其进行了验证。为什么这里的语法不正确,但在验证中却不正确?

4

1 回答 1

1

问题是 float_data不是JSON 字符串;它显然已经被解析为一个 JavaScript 对象,可能是通过检索它的 AJAX 调用。您不能将对象与字符串连接并期望看到 JSON;该语言不知道其原始格式是什么,也无法将其转换回来。

您需要使用原始 JSON 字符串,然后在 open_dialog 中对其进行解析,或者更好的办法是完全避免使用内联处理程序,并使用 jQuery 的.click(function).

于 2012-09-30T13:15:11.427 回答