0

データベースの更新に ajax を使用しており、以下のコードを使用しています。問題は、$.post メソッドで newValue を設定できないことです。この値が定義されています。

$('#sabt_mored1').live('click', function() {
    $edit=false;
    var newVal=false;
    $(this).parent().siblings('td').find('#cd_e0').hide();              

    $.post("actions.php", {id_sal: id_sal, sal:sal1 , postaction:'virayeshe_sal'}, 
        function(data){
            if(data.success) {
                newVal=true;
            }
            else{
                newVal=false;                       
            }
        },'json');

    alert(newVal);              
    return false;               
}); 

アラートを使用した後、私は false を取得しますが、取得する必要があります。$.post は data.success を返しました

4

3 に答える 3

0

Ajax 呼び出しは非同期です。サーバーから結果が返されるまで、コールバック関数のコードは呼び出されません。アラート ステートメントは、リクエストを開始した直後に実行されます。この時点で、newVal のデフォルト値は常に false です。

コールバック関数内で結果を取得した後に発生する必要があるアクションを実行する必要があります。

于 2013-03-13T20:20:24.283 に答える
0

ajax成功コールバック関数が実行される前にalert()発生しています。コールバックの最後にアラートを配置すると、正しく表示されます。

于 2013-03-13T20:20:27.690 に答える
0

post()は非同期で実行されるため、AJAX 操作が完了した後にのみ実行されるようにするには、ステートメントalertをコールバック関数内に含める必要があります。

$('#sabt_mored1').live('click', function(e) {
    e.preventDefault();

    $edit = false;
    var newVal = false;

    $(this).parent().siblings('td').find('#cd_e0').hide();              

    $.post("actions.php", {id_sal: id_sal, sal:sal1 , postaction:'virayeshe_sal'}, 
        function(data){
            if(data.success) {
                newVal=true;
            }
            else{
                newVal=false;                       
            }

            alert(newVal);
        },'json');           
}); 
于 2013-03-13T20:20:51.067 に答える