jquery正确同步ajax调用

时间:2016-01-10 00:20:50

标签: jquery ajax asynchronous .when

我需要在函数内调用jquery ajax函数并检查响应数据

function checkInput(){
    var success;
    $.ajax({...}).then(function (data) {
        success = data.response
        console.log(success); // true/false correct!
        if (success)
            call_other_func(); // works
    });
    console.log(success); // undefined;

    return success; // i need to return success variable        
}

其他函数调用checkInput

if (checkInput()){
        console.log('correct input value'); 
    }
else{
     call_error_validation_func();
}

使用async:false可以正常工作但不正确。

我该怎么办?

感谢

1 个答案:

答案 0 :(得分:0)

你的问题是理解javascript中的异步调用。 您应该做的是返回一个委托,然后在完成ajax调用时获取返回的值。

以下是一个例子:

function checkInput(){
    var success;
    var delegate = $.ajax({...});   

    return delegate;
}

var delegate = checkInput();

delegate.done(function(data){
    console.log(data); //will show you'r results

    // Do whatever you need here
});