Jquery变量赋值

时间:2013-06-11 06:39:22

标签: jquery ajax asynchronous

大家好,我的Jquery功能有问题。我有一个名为“var checkBit”的变量我执行$ ajax操作并基于此我将“checkBit”设置为1或0.但是当我提醒“checkBit”时,它总是显示0,即使我已经重新分配它值1.我已经对我遇到问题的代码发表了评论。 这是我的代码:

function checkStatusType(statusId){
    var checkBit = 0; //deceleration of variable and initially assigned 0
    $.ajax({ //ajax action performed
        url:'ajax_1.php',
        type:'GET',
        data:{task:'check_status_type',id:statusId},
        dataType: 'json',
        cache:false,
        success:function(data){
            if(data.length > 0){

                if(data != 0){ //here i am checking if the value of "data" //is 1 or not
                    $('#expected-return-time').slideDown();
                    checkBit = 1;  //based on the above check i assign 
                    //either 1 or 0 to the variable

                    //alert(checkBit); when i alert it here it works fine
                } else {

                    $('#expected-return-time').remove();
                    checkBit = 0;  // same here 
                    //alert(checkBit);

                }
            } else {
                alert('Sorry unable to find the status ID');
            }


        },error: function(data) {
            console.log('Error: ' + data);
        }

    });
    alert(checkBit); //problem when i alert the variable here it always 
    //shows 0 only every time. I dont know whats wrong with it.

}

我的基本目标是我的函数将返回变量并基于值1或0我有不同的功能,我执行。如果有更有效的方式,我喜欢学习。非常感谢你。

2 个答案:

答案 0 :(得分:0)

Ajax查询是异步的,它不会等待完成并执行alert(checkBit);

像这样使用smt:

$.ajax({ //ajax action performed
url:'ajax_1.php',
type:'GET',
data:{task:'check_status_type',id:statusId},
dataType: 'json',
cache:false,
success:function(data){
      finish();
}});

function finish() {
    alert(checkBit);
}

答案 1 :(得分:0)

最后一次调用的问题:

alert(checkBit);

这是在ajax的响应完成之前发生的,因此每次都会显示0。我建议将一个回调函数传递给checkStatusType,以封装你想要对返回的checkbit进行的处理。