jQuery Deferreds - передать результат $ .when в $ .then - PullRequest
1 голос
/ 14 июня 2011

Я начинаю использовать jQuery Deferred объектов немного больше, и я сталкиваюсь с этой проблемой:

У меня есть центральная функция AJAX, которая выполняет предварительную проверку данных, настройку AJAX и некоторые другие вещи, которыеотправляет на сервер и возвращает xyz как данные.Как получить доступ к «xyz» в части «then» $ .when (ajaxfn) .then (dosomethingwithresult ());Я получаю, что ajaxfn возвращает отложенный объект, но есть ли способ передать forwardText xhr вперед?

Я, по сути, делаю это так ...

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.Я хотел бы знать, есть ли лучший способ сделать то, что я описал?

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

Это можно упростить так:

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

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

Нет необходимости использовать $.when объект.Аякс уже возвращает обещание.

1 голос
/ 14 июня 2011

Попробуйте это

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