0

こんにちは、Jquery 関数に問題があります。「var checkBit」という変数があります。$ajax アクションを実行し、それに基づいて「checkBit」を 1 または 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 に基づいて、実行するさまざまな関数を用意することでした。もっと効果的な方法があれば、私は学びたいと思っていました。どうもありがとうございました。

4

2 に答える 2

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);
}
于 2013-06-11T06:44:23.303 に答える
0

次への最終呼び出しの問題:

alert(checkBit);

これは、ajax からの応答が完了する前に発生するため、毎回 0 が表示されます。コールバック関数を checkStatusType に渡して、返されたチェックビットで実行したい処理をカプセル化することをお勧めします。

于 2013-06-11T06:44:44.023 に答える