我在 ajax 成功函数中有以下代码。
$.each(data,function(index,element){
$.ajax({
type: 'GET',
url: "http://192.168.1.56/SampleAjaxCall/sample.svc/sampleFunciton",
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
async: false,
success:function(response){
alert("Success !"); // invokes after the loop
}
});
alert("After the ajax call"); // invokes first
});
首先,我收到此警报消息在 ajax 调用之后。循环结束后,我收到此警报消息 alert("Success !")。所以ajax是在循环结束后调用的。所以我需要先调用ajax。如何实现这个场景。
最佳答案
实际上,您的 ajax 调用实际上是在第二条警报消息(“ajax 调用之后”)之前调用的。但是,由于 AJAX 代表异步等,在处理 ajax 请求时,脚本的其余部分已经执行。因此,如果您希望在 ajax 调用之后执行代码,请将其包装在一个函数中,然后在 success block 中调用该函数(或者只是将代码移动到 success 回调中)。示例:
var after_call_func = function() {
alert("After the ajax call");
};
$.each(data,function(index,element){
$.ajax({
// your ajax configuration
success:function(response){
alert("Success !");
after_call_func(); // call the function when ajax is complete
}
});
});
编辑
我现在注意到您已将 async
选项设置为 false
,这很可能就是您希望警报在 ajax 调用之后执行的原因...但是,正如 jQuery documentation告诉我们:
Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation.
看起来你两者都有...所以要么不使用 jsonp 数据类型,也不使用跨域请求,或者将 ajax 调用之后要执行的代码包装在 success block 中,如上面的示例.
关于javascript - 在另一个 ajax 成功中调用 jquery ajax 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22785532/