1

jQuery Deferredオブジェクトをもう少し使い始めましたが、次の問題が発生しました。

データの事前検証、ajaxセットアップ、およびサーバーに送信してxyzをデータとして返すその他のいくつかの機能を実行する中央のAJAX関数があります。$ .when(ajaxfn).then(dosomethingwithresult());の'then'部分にある'xyz'にアクセスするにはどうすればよいですか。ajaxfnが遅延オブジェクトを返すことがわかりましたが、xhrのresponseTextを転送する方法はありますか?

私は本質的にこのようにやっています...

function ajaxfn(data) {
prevalidate(data);
return $.ajax(settings);
}
$.when(ajaxfn).then(function() {
// put 'xyz' on the page somewhere.
});

現時点では、$。dataポインターをajaxfnに渡しており、ajaxリクエストが成功すると、$('body'、pos、result)があり、そのように内部からアクセスします。 ('body).data(pos)==xyz。私が説明したことを行うためのより良い方法があるかどうか知りたいですか?

4

2 に答える 2

2

これは次のように簡略化できます。

function ajaxfn(data) {
    prevalidate(data);
    return $.ajax(settings);
}

ajaxfn().then(function(response) {
    console.debug(response);
});

$.whenオブジェクトを使用する必要はありません。ajaxはすでに約束を返しています。

于 2011-06-14T03:22:47.530 に答える
1

これを試して

$.when(ajaxfn()).then(function(data) {
    // put 'xyz' on the page somewhere.
});
于 2011-06-14T03:11:23.540 に答える