我需要从我的JQuery 1.9.1应用程序中进行两次Web服务调用。在进行第二次调用之前,我需要第一个结果。
看来我的getJSON请求不会阻塞该线程。我被告知javascript不是多线程的,那么如何阻止这些服务器调用?
答案 0 :(得分:3)
jQuery的ajax
个函数都返回jqXHR
object来实现Promise interface。
不是阻止异步请求(以及其他所有内容),而是嵌套您的请求
$.ajax({...})
.done(function( data ) {
// second request
$.ajax({...});
});
答案 1 :(得分:2)
好吧,你不需要阻止线程,这是旧学校。
您有两种选择:
我推荐第二种方法,因为这是正确的方式。
/* Call 1 */
$.ajax({
url: 'first url to call',
data: 'first data sent to the server',
success: function (results1){
// Do something with the results
/* make the second call */
$.ajax({
url: 'sencond url to call'
data: 'second data sent to the server'
success: function(results2){
// Do something when all completed
}
});
}
});
答案 2 :(得分:1)
将 async false 模式中的第一个ajax请求调用到服务器
$.ajax({
url: Url,
dataType: 'json',
async: false,
data: myData,
success: function(data) {
//stuff
}
});