以下是触发语法错误(Chrome中为unexpected identifier
,Firefox中为missing ] after element list
):
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_encode
。json是由PHP open_dialog
生成的。 1}},所以我不认为json格式不正确(我也在这个应用程序的其他地方能够成功地操作我想在这里使用的这个对象的所有部分。)
我尝试离开onclick并注释掉open_dialog()
函数的内容,以确保不会在其中触发语法错误。并且,我尝试将onclick="$.plot($(\'#graph\'),'+flot_data+');"
函数的内容直接复制到onclick中,如下所示:
''
(onclick包含在""
并使用setContent
,因此我必须使用转义的单引号)
我将传递给{{1}}的数据复制/粘贴并在小提琴中验证。为什么这里的语法不正确,但验证中没有?
答案 0 :(得分:1)
问题是flot_data 不是一个JSON字符串;它显然已经被解析为JavaScript对象,可能是通过检索它的AJAX调用。您不能将对象与字符串连接,并期望看到JSON;语言不知道它的原始格式是什么,也无法将其转换回来。
您需要使用原始JSON字符串,然后在open_dialog中解析它,或者更好的想法是完全避免内联处理程序,并使用jQuery .click(function)
在脚本中附加单击侦听器