私はjquerydeferredsの使い方を学ぼうとしています。
jsfiddleでhtmlを使用すると、then()
ステートメントに出力されたときに、「success」とajaxリクエストによって返されるhtmlの2行を持つオブジェクトが返されます。
だから私がこれをするとき:
$(document).on('click', '.ajax', function() {
$.when(ajax1('<p>first</p>'),
ajax2('<p>second</p>'),
ajax3('<p>third</p>'))
.then(function(results1, results2, results3) {
console.log(results1);
$('.document').append(results1);
$('.document').append(results2);
$('.document').append(results3);
alert('all ajax done');
});
});
http://jsfiddle.net/loren_hibbard/AsgDz/
私はこれをコンソールで取得します:
["<p>first</p>", "success",
Object
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseText: "<p>first</p>"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object
どうすればそれだけにアクセスしてresponseText
、1行おきに「成功」するhtml出力を回避できますか。
first
success
second
success
third
success
また、JSONデータで使用する可能性が高いので、それをどのように解析しますか。現在、関数では「ajax all complete」がthen()
返されますが、コンソールで返されるオブジェクトは3つのオブジェクトのセットです。1つは解析されたjson文字列、もう1つは「成功」と言う迷惑な文字列、3つ目は解析されていないJSONオブジェクトであるresponseTextを含む大きなオブジェクトです。この最初のオブジェクトにアクセスして、解析した文字列を出力するにはどうすればよいですか?
http://jsfiddle.net/loren_hibbard/jtvHf/1/
ありがとうございました!