2012-03-23 21 views
20

XHR応答タイプを "json"に設定する際に問題があります。 DOM例外12XMLHttpRequest responseType = "json"エラーを返すSYNTAX_ERR:DOM Exception 12

.jsファイル:

var xml = new XMLHttpRequest(); 
xml.open("GET", "test.php", true); 
xml.responseType = "json"; 
xml.send(); 

私は空の文字列xml.responseType = "";それを残せば、私は「JSON」私はコンソールエラーメッセージSYNTAX_ERRを得るためにそれを設定するとき、それは正常に動作します。 PHPファイル:

<?php 
$foo = "{\"key1\":\"val1\", \"key2\":\"val2\"}"; 
echo $foo; 
?> 

ないで何が起こっているか確認してください。..任意のアイデア?

+0

[OK]を必要な形式でデータを取得するために、次のコードを使用することができますresponseTypeを使用しての

。 mozilla.org/en/XMLHttpRequest)( "document"、 "blob"、 "arraybuffer"、 "text"、 "") "json"を除きます。私はChrome 17とSafari 5.1で試しました – alnafie

+0

また、サーバから情報を出力するときに、適切なコンテンツMIMEタイプを返すことを覚えておいてください。ヘッダ( "Content-Type:application/json");問題を解決する必要があります。また、自分でjsonを作成する代わりに、json_encodeを使用する必要があります。 print json_encode(array( "key1" => "val1"、 "key2" => "val2")); – Rahly

+0

2014年3月現在、responseType = "json"は最新のChromeとFirefox、Operaでサポートされています。 – Kay

答えて

23

responseType、私はあなたがそのメソッドを実装していないブラウザを使用していること、それは可能かもしれないので、すべてのブラウザでは、このメソッドをサポートしていないと確信しています//開発者:代わりに、あなたはさらにテストの後、それは[こちら](httpsを述べたすべての値を受け入れます。..

var xml = new XMLHttpRequest(); 
xml.open("GET", "test.php", true); 

xml.onreadystatechange = function() { 
    if (xml.readyState != 4) { return; } 

    var serverResponse = JSON.parse(xml.responseText); 
}; 

xml.send(null); 
+0

またはeval(xml.responseText )確かに行く –

+16

私はブラウザがネイティブにJSON解析をサポートしていなくても、あなたがライブラリを使用できるようにしても、これが動作することを確認したいならば、ユーザーが返すデータに対するevalを実行することは安全ではないので、これはhttp://www.json.org/js.htmlですが、フィードバックに感謝します:) –

+1

'try-catch'ブロックで' JSON.parse'呼び出しを囲むことで、 'responseText 'プロパティが正しく有効なJSONとして解析されました。 –

8

JSON responseTypeがWebKitに実装されていません。 http://groups.google.com/a/chromium.org/group/chromium-bugs/browse_thread/thread/8107e50e4207eb5a/a5d2c31247feae56?lnk=raot

更新2016-01-03: 予想通り、WebKitはこの間にこの機能を実装しています。

XMLHttpRequestオブジェクトのプロパティが HTML 5に含まれているその新しい変種 XMLHttpRequest Level 2とに追加され
+3

最近、ChromiumのJSONレスポンスタイプが実装されました:http://src.chromium.org/viewvc/blink?view=revision&revision=156290 – kamituel

+0

この機能はChromeで31日にリリースされました(2013年11月) – Nayuki

関連する問題