我已经遍历了有关jquery异步AJAX请求的堆栈溢出的许多主题。这是我的代码。
funciton ajaxCall(path, method, params, obj, alerter) {
var resp = '';
$.ajax({
url: path,
type: method,
data: params,
async: false,
beforeSend: function() {
$('.black_overlay').show();
},
success: function(data){
console.log(data);
resp = callbackFunction(data, obj);
if(alerter==0){
if(obj==null) {
resp=data;
} else {
obj.innerHTML=data;
}
} else {
alert(data);
}
},
error : function(error) {
console.log(error);
},
complete: function() {
removeOverlay();
},
dataType: "html"
});
return resp;
}
问题是,当我使用asyn为false时,我得到了正确的resp值。但是beforeSend不起作用。
如果我把async设为true,那么它的beforeSend可以正常工作,但是resp值将不能正确返回,它始终为空。
有什么办法可以解决这两个问题?我会得到beforeSend函数和resp值都。
谢谢
最佳答案
使用async:false
并在beforeSend
调用之前手动运行分配给$.ajax
的功能:
var resp = '';
$('.black_overlay').show();
$.ajax({
...
要么学习如何在异步任务中使用回调函数。网上有很多不错的教程。
关于javascript - jQuery异步调用返回未定义的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39469599/