2014-09-05 1 views
0

post answered the question I was about to ask. Единственная проблема заключается в том, что мне нужно использовать результат первого вызова в качестве аргумента для второго вызова ajax.JQuery Ajax: Как использовать результат первого вызова ajax сделать второй звонок? (.then (function()))

Фактически, мне нужно получить контакты для определенного клиента. Однако единственным аргументом, который у меня есть, является запрос от этого клиента. Я хотел бы сделать первый звонок, чтобы получить клиентский номер клиента, а затем использовать этот идентификатор для запроса всех контактов.

Может ли кто-нибудь предоставить небольшой код, где Результат первого запроса используется для совершения второго вызова?

Здесь часть кода, который он написал.

$.ajax({..}) // Promise 1 
.then(function() { 
    // This will only fire if the first request had no error - was "done" 
    // We then return a NEW promise for the 2nd request. In a proper 
    // Promises/A, 'then' returns a (new) promise. 
    return $.ajax({..}) // Promise 2 
}) 

Благодарим за помощь.

+2

ммм ... это в первом параметре передается вашей .then обратного вызова ... –

+0

@KevinB, я не слишком familliar с AJAX. Я только что позвонил в первый раз, но я думаю, что это лучший способ сделать это. Можете ли вы представить пример, как я это сделаю? – Richard77

ответ

0

.then callback (s) содержит результаты, полученные за обещание, за которое оно предназначено. В этом случае он будет содержать три аргумента, те же три, которые передаются в $.ajax успешные обратные вызовы: проанализированный результат, статус текста и объект jqXHR.

$.ajax({..}) // Promise 1 
.then(function (result, status, jqXHR) { 
    // This will only fire if the first request had no error - was "done" 
    // We then return a NEW promise for the 2nd request. In a proper 
    // Promises/A, 'then' returns a (new) promise. 
    console.log(result); 
    return $.ajax({..}) // Promise 2 
}).done(function (contacts, status, jqXHR) { 
    //... 
}); 

вы можете использовать result, чтобы получить идентификатор клиента от ответа. Последний .done будет вызван ответом от второго обещания.

+0

Является ли результат в функции .then такой же, как и тот, который был возвращен первым вызовом ajax? – Richard77

+0

Да, это то же самое. –

0

Возможно, вам понравится эта работа?

function getContacts(data){ 
    $.ajax({ 
     type: 'POST', 
     dataType: dataType, 
     url: 'someotherUrl', 
     data: idofclient = data.idofclient 
     success: function(data){ 
      console.log(data.contact); 
     } 
    }); 
} 

$.ajax({ 
    type: 'POST', 
    dataType: dataType, 
    url: 'someUrl', 
    success: function(data){ 
     getContacts(data); //data should have the id of the client of course 
    } 
}); 
+0

Я думаю, это должно сработать, но я думаю, что это не так компактно, как если бы я использовал. Затем, но я думаю, что все должно быть в порядке. – Richard77

+0

ах, я как-то пропустил .then (function() - часть в вашем вопросе. :) – aolsen

1
$.ajax({...}).then(function (d1) { 
    // d1 is the data returned from the first ajax call. 
    // You can use it as a parameter to the second ajax call below. 
    return $.ajax({...}).done(function (d2) { 
     // d2 is the data returned from the second ajax call. 
     console.log(d1, d2); 
    }) 
}); 
+0

Это больше похоже на это. Я пытаюсь это прямо сейчас. – Richard77

Смежные вопросы