jQuery停止ajax异步运行

时间:2015-12-09 22:18:58

标签: javascript jquery ajax asynchronous

有没有办法阻止ajax运行异步?

jQuery的:

var returnValue = false;
        var appCount = 0;

        $.ajax({
            type: "GET",
            url: "getBookedAppointmentCountByDoctorAndDate.php",
            data: dataString,
            success: function (response){
                appCount = response;
                //alert(appCount);
                if(appCount >= 6){

                    returnValue = true;
                }
            }
        });
        return returnValue;

我的代码中有一个if语句,用于检查此函数的返回值。因为Ajax运行异步,所以if语句在设置返回值之前继续。用于返回php值的其他方法的任何想法或建议?

if (blah($(this)) === true) {
                    alert("blah");
                } else { ...

2 个答案:

答案 0 :(得分:2)

将参数async: false添加到a​​jax参数http://api.jquery.com/jquery.ajax/,浏览器在ajax请求时将处于非活动状态,因此这不是一个好的决定。

最好将if statement移动到ajax成功函数,或者使用if statement创建函数并在成功函数中调用它。

答案 1 :(得分:1)

你在一个函数中使用这个片段,对吗?由于您有一个return语句,我猜是这样的。

您无法返回将在异步任务中确定的值。你可以做的是将回调函数传递给这个函数,当确定值时,将值传递给该函数并调用它。

function myFunc(callback) {

    var returnValue = false;
    var appCount = 0;

    $.ajax({
        type: "GET",
        url: "getBookedAppointmentCountByDoctorAndDate.php",
        data: dataString,
        success: function (response){
            appCount = response;
            //alert(appCount);
            if(appCount >= 6){
                returnValue = true;
            }
            callback(returnValue);
        }
    });
}



myFunc(function (value) {
    console.log(value);
    // do what ever you want with `value`
})

另一种方法是使用Promise。如果你想使用jQuery的承诺,这里是documentations