我已经遍历了有关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/

10-12 06:38