新しい方法I: fetch
TL; DR同期リクエストを送信したり、古いブラウザをサポートしたりする必要がない限り、この方法をお勧めします。
リクエストが非同期である限り、Fetch APIを使用してHTTPリクエストを送信できます。フェッチAPIはpromiseで動作します。これは、JavaScriptで非同期ワークフローを処理するための優れた方法です。このアプローチではfetch()、リクエストの送信とResponseBody.json()レスポンスの解析に使用します。
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(jsonResponse) {
// do something with jsonResponse
});
互換性:Fetch APIは、IE 11とEdge 12&13ではサポートされていません。ただし、ポリフィルがあります。
新しい方法II: responseType
以下のようLonderenがで書かれた彼の答え、新しいブラウザは、あなたが使用できるようにするresponseType応答の予想されるフォーマットを定義するプロパティを。解析された応答データには、responseプロパティを介してアクセスできます。
var req = new XMLHttpRequest();
req.responseType = 'json';
req.open('GET', url, true);
req.onload = function() {
var jsonResponse = req.response;
// do something with jsonResponse
};
req.send(null);
互換性:responseType = 'json'IE11ではサポートされていません。
古典的な方法
標準XMLHttpRequestが全く持っていないresponseJSONだけで、プロパティをresponseTextしてresponseXML。bitlyが実際にリクエストに対してJSONで応答する限りresponseText、JSONコードをテキストとして含める必要があるので、次のコードを使用して解析するだけですJSON.parse()。
var req = new XMLHttpRequest();
req.overrideMimeType("application/json");
req.open('GET', url, true);
req.onload = function() {
var jsonResponse = JSON.parse(req.responseText);
// do something with jsonResponse
};
req.send(null);
互換性:このアプローチは、XMLHttpRequestおよびをサポートするすべてのブラウザで機能しますJSON。
JSONHttpRequest
を使用しresponseJSONたいが、JQueryよりも軽量なソリューションが必要な場合は、JSONHttpRequestを確認してください。通常のXMLHttpRequestとまったく同じように機能しますが、responseJSONプロパティも提供します。コードで変更する必要があるのは最初の行だけです。
var req = new JSONHttpRequest();
JSONHttpRequestは、JavaScriptオブジェクトをJSONとして簡単に送信する機能も提供します。詳細とコードは、http://pixelsvsbytes.com/2011/12/teach-your-xmlhttprequest-some-json/にあります。
完全な開示:私はPixels | Bytesの所有者です。私のスクリプトは問題の良い解決策だと思うので、ここに投稿しました。リンクを削除する場合は、コメントを残してください。
XMLHttpRequestありません。何が問題なのか。