ちょっと、私はAjaxを使ってフォームに記入した後、サーバーから応答を取得するアラビア語の連絡先スクリプトを持っています。jQuery.parseJSON()がすべてのサーバーで動作しないのはなぜですか?
一部のApacheサーバーでは、jQuery.parseJSON()
は、他のサーバーで完全に解析するのと同じjsonに対してinvalid json
の例外をスローします。この例外は、chromeおよびIEでのみスローされます。
jsonのコンテンツは、PHPのjson_encode()
機能を使用してエンコードされます。私は、jsonデータで正しいヘッダを送信し、ユニコードをutf-8に設定しようとしましたが、それは助けになりませんでした。
これは私が(それは長いですので、もし第二の部分を削除)を解析しようとJSONレスポンスのいずれかです。
{"pageTitle":"\u062e\u0637\u0623 \u0639\u0646\u062f \u0627\u0644\u0625\u0631\u0633\u0627\u0644 !"}
注:このデータのこの言語はアラビア語で、それが理由ですそれはPHPのjson_encode()
と解析された後、このように見えます。
以下の例でリクエストを行い、firebugまたはWebkit開発ツールを使用して完全な応答データを調べることができます。応答はjsonlintになります!
最後に、同じバージョンのスクリプトを使用して2つのURLがある場合は、クロムまたはIEを使用してそれらをブラウズして、壊れた例のエラーを確認してください。
壊れ例:http://www.mt-is.co.cc/my/call-me/更新
:もっと明確にするために、私は私が古いeval()
を使用することによってこの問題を解決するためにうまく管理に注意したいと思いますコンテンツを解析するために、私はこの修正で別のバージョンをリリースしました。このようになりました:
// Parse the JSON data
try
{
// Use jquery's default parser
data = $.parseJSON(data);
}
catch(e)
{
/*
* Fix a bug where strange unicode chars in the json data makes the jQuery
* parseJSON() throw an error (only on some servers), by using the old eval() - slower though!
*/
data = eval("(" + data + ")");
}
これはjqueryのparseJSON()
メソッドのバグかどうかを知りたいので、報告することができます。あなたはjson2.jsを使用してみてください
どちらの例でも、evalまたはparseJSONのいずれも検出されません。 JSONが解析される場所へのヒントを教えてください。また、あなたのサンプルはchromiumのjQuery.parseでうまく解析されます – phihag
私は 'eval()'を使う別のバージョン1.3.1をリリースしました。http://namodg.com/tryで見ることができます( 'send 'メソッドであるnamodg.main.js)。 parseJSONは '$ .ajax'データ型が' json'に設定されているときに自動的に使われます。 – Maher4Ever