_$.ajax({
url: 'http://jsonplaceholder.typicode.com/posts/1',
method: 'GET',
}).done(function(data){
console.log(data);
console.log(data.responseText);
});
_
console.log(data.responseText);
が未定義を返す理由を誰かが理解するのを手伝ってもらえますか?
http://clarkben.com/ajaxtesting/
編集:OK、データはjqXHRオブジェクトではないように見えます。 $ .ajaxステートメント全体を変数に割り当てると、その変数はjqXHRオブジェクトになるため、その方法でアクセスできます。ただし、.doneの一部である関数に渡されるデータがjqXHRオブジェクトではない理由はわかりません。
_var theRequest = $.ajax({
url: 'http://jsonplaceholder.typicode.com/posts/1',
method: 'GET',
}).done(function(data){
console.log(data);
console.log(theRequest.responseText);
});
_
OK、最終的に私はjqXHRドキュメントで答えを見つけました:
jqXHR.done(function(data、textStatus、jqXHR){});
成功コールバックオプションの代替構成である.done()メソッドは、非推奨のjqXHR.success()メソッドを置き換えます。実装の詳細については、deferred.done()を参照してください。
したがって、以下のコードが機能します。
$.ajax({
url: 'http://jsonplaceholder.typicode.com/posts/1',
method: 'GET',
}).done(function(data, textStatus, jqXHR){
console.log(data);
console.log(jqXHR.responseText);
});
最後にそこに着きました!
デフォルトでは、jQUeryは応答のタイプを推測しようとします。応答のヘッダーがapplication/json
の場合、data
はjavascriptオブジェクトになります。これがtext/html
またはtext/plain
のようなものである場合、data
は応答の本文を含む単純な文字列になります。
また、data.responseText
は、文字列(またはプロパティのないjavascriptオブジェクトundefined
)で呼び出すと、明らかにresponseText
になります。
JQuery ajaxのドキュメントを参照してください: http://api.jquery.com/jquery.ajax/
jqXHR.done(function(data、textStatus、jqXHR){});
最初のパラメータはデータです。 jqXHRが必要な場合、これは3番目のパラメーターです。
データはこれです:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
それがおそらくデータがオブジェクトであり、jQueryがそれをそのように解釈する理由です。これが、data.responseTextが未定義を返す理由です。 responseTextはオブジェクトの属性ではありません