Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome:意外标识符,Firefox:元素列表后缺少]_Javascript_Google Maps Api 3_Syntax Error_Flot - Fatal编程技术网

Javascript Chrome:意外标识符,Firefox:元素列表后缺少]

Javascript Chrome:意外标识符,Firefox:元素列表后缺少],javascript,google-maps-api-3,syntax-error,flot,Javascript,Google Maps Api 3,Syntax Error,Flot,下面是触发语法错误(Chrome中的意外标识符,以及Firefox中元素列表后的缺失]): infowindow.setContent(“+locale+”(“+hour+”:00):$”+s.total+”; 具体来说,onclick=“open\u dialog(“+flot\u data+”);“中的'+flot\u data+”。删除此位将删除语法错误 Firebug(字面上)指向它用[object object]表示的flot\u数据(它指向第二个对象中的O。json是由PHP的js

下面是触发语法错误(
Chrome中的意外标识符
,以及Firefox中元素列表后的
缺失]):

infowindow.setContent(“+locale+”(“+hour+”:00):$”+s.total+”;
具体来说,
onclick=“open\u dialog(“+flot\u data+”);“
中的
'+flot\u data+”
。删除此位将删除语法错误

Firebug(字面上)指向它用
[object object]
表示的
flot\u数据(它指向第二个
对象中的
O
。json是由PHP的
json\u encode
生成的,所以我不认为json格式错误(此外,我在这个应用程序的其他地方能够成功地操作我试图在这里使用的这个对象的所有部分)

我尝试离开onclick并注释掉我的
open\u dialog
函数的内容,以确保不会在其中触发语法错误。并且,我尝试将我的
open\u dialog()
函数的内容直接复制到onclick中,如下所示:
onclick=“$.plot($(\'\'图形\'),'+flot\u数据+”)”
(onclick被封装在
'
中并使用
'
,因此我不得不使用转义单引号)


我复制/粘贴了传递给
setContent
的数据,并对其进行了验证。为什么这里的语法不正确,但验证中没有语法错误?

问题在于flot_数据不是JSON字符串;它显然已经被解析为JavaScript对象,可能是通过检索它的AJAX调用。无法连接object使用字符串,希望看到JSON;该语言不知道其原始格式是什么,无法将其转换回


您需要使用原始JSON字符串,然后在open_dialog内部解析它,或者更好的办法是完全避免内联处理程序,并使用jQuery的
,在脚本中附加click侦听器。单击(函数)

查看生成的HTML,特别是
onclick=“open_dialog('+flot_data+);”
。结果(
“open_dialog”(“+flot_data+”);
)似乎不是有效的JavaScript,通过查看它,您可能会找到原因。除非您告诉我们
flot_data
@FelixKling的值,
flot_data
是一个非常大的数据对象/json,否则我们无法为您提供更多帮助(不是太多,但是太大了,不能在这里发布)。顺便说一句,我在其他地方使用了
flot_data
,所以里面没有语法错误。我不确定你说的“查看生成的HMTL”是什么意思“-由于脚本未执行,因此没有生成HTML。此行连接一个字符串并将其传递给
setContent
。您是说此行未执行且内容从未设置?因为字符串连接本身在我看来很好。结果似乎更像是
open\u对话框(…)
是无效的JS,即当您尝试单击图像时会出现错误。顺便说一句,如果
flot\u data
确实是一个对象,那么您不想将其与字符串连接,因为结果将是
打开对话框([object object object])
,而Btw正好抛出该错误(
意外标识符
)如果您试图执行它。@FelixKling噢!对不起。下面是setContent吐出的内容:
。显然
[object]
并不是我所期望的……最好的解决方案是不使用内联事件处理程序,而是将它们与JavaScript绑定,这样您就可以使用对变量的实际引用来分配实际函数。但由于我不知道您的代码的上下文,因此我无法真正建议一种方法。我只能向您介绍一般情况队形:。
infowindow.setContent('<h3>'+locale+' ('+hour+':00): $'+s.total+'</h3><img src="'+fname+'" onclick="open_dialog('+flot_data+');" style="cursor:pointer;" />');