2014-07-24 5 views
0

метод обработки AJAXКак обрабатывать одновременные ответы ajax с использованием одного метода ajax?

function ajaxMethod(){ 
    return $.ajax({ 
     url: ajaxUrl, 
     type: "POST", 
     dataType: "JSONP", 
     jsonpCallback: ajaxCallback 
    }); 
} 

вызовы этого метода:

dD(ajaxMethod()); 
aA(ajaxMethod()); 
bB(ajaxMethod()); 
cC(ajaxMethod()); 

AA, BB, CC, метод дд есть

promise.success(function (response) { 
    console.log(response); 
}); 

Теперь аА ответ приходит в функции Bb, , bb-ответ в cc-функции и при одновременном вызове. Также попытался использовать async true, ничего не происходит. Любые предложения?

+0

по умолчанию 'async' будет установлено в true, так как это то, что' $ .ajax ({..} 'было создано для. – dreamweiver

ответ

0

Я думаю, что это то, что вам нужно.

Этот код использует возвращенное обещание дождаться результата, а затем передать результат другой функции. Теперь

ajaxMethod().success(function(response) 
{ 
    dD(response); 
}); 

ajaxMethod().success(function(response) 
{ 
    aA(response); 
}); 

ajaxMethod().success(function(response) 
{ 
    cC(response); 
}); 

ajaxMethod().success(function(response) 
{ 
    dD(response); 
}); 

Ваш аА, Bb, Cc и Dd методы могут быть:

function <insertname>(response) 
{ 
    console.log(response); 
} 
1

С jsonpCallback вы рассказываете JQuery использовать конкретное имя функции для функции обратного вызова (вместо того, чтобы генерировать уникальный один), поэтому каждый раз, когда вы его вызываете, вы перезаписываете предыдущую функцию.

Просто удалите jsonpCallback: ajaxCallback.


Пока вы на него, удалить type: "POST",, она несовместима с JSONP.

+0

Я нахожу вызов службы с жестко запрограммированным именем функции обратного вызова, поэтому нельзя использовать уникальное использование имя, которое создается jquery –

-1

Если вы хотите, чтобы ваш запрос прийти в синхронном образом, попробуйте выполнить следующие действия:

var callBack = $.Callbacks(); 

callBack.add(dD(ajaxMethod())); 
callBack.add(aA(ajaxMethod())); 
callBack.add(bB(ajaxMethod())); 
callBack.add(cC(ajaxMethod())); 
callBack.fire(); 

выше строка кода будет убедиться, что соответствующий Ajax вызов будет получить вызов.

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