0

以下は、構文エラーを引き起こしています ( unexpected identifierChrome および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+');". このビットを削除すると、構文エラーが削除されます。

flot_dataFirebugは、それが表す(文字通り) を指します ( 2 番目[object Object]の を指します。json は PHP によって生成されたので、json が不正な形式であるとは思いません (また、このアプリの他の場所にいて、すべてを正常に操作できます)ここで使用しようとしているこのオブジェクトの部分)。OObjectjson_encode

onclick を残してみて、関数の内容をコメントアウトして、open_dialog関数内で構文エラーが発生しないようにしました。そして、関数の内容を onclick に直接コピーしてみ ましopen_dialog()た:
onclick="$.plot($(\'#graph\'),'+flot_data+');"''""

渡されるデータをコピーして貼り付け、setContentフィドルで検証しました。ここでは構文が間違っているのに、検証では間違っているのはなぜですか?

4

1 に答える 1

1

問題は、flot_data がJSON 文字列ではないことです。おそらくそれを取得した AJAX 呼び出しによって、すでに JavaScript オブジェクトに解析されているようです。オブジェクトを文字列と連結して、JSON を期待することはできません。言語は元の形式が何であったかを認識せず、元に戻すことはできません。

生の JSON 文字列を使用してから open_dialog 内で解析する必要があります。または、インライン ハンドラーを完全に回避し、jQuery の.click(function).

于 2012-09-30T13:15:11.427 に答える