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;               
}); 

使用警报后我得到错误但我必须得到,$.post 返回 data.success

4

3 回答 3

0

Ajax 调用是异步的。在服务器返回结果之前,不会调用回调函数中的代码。alert 语句在发起请求后立即执行。此时 newVal 将始终具有其默认值 false。

您需要在回调函数中获得结果后执行必须发生的操作。

于 2013-03-13T20:20:24.283 回答
0

您在ajax 成功回调函数执行之前alert()发生。将警报放在回调的末尾,它将正确显示。

于 2013-03-13T20:20:27.690 回答
0

由于post()是异步执行的,因此您的alert语句需要在回调函数中,以确保它仅在 AJAX 操作完成后执行:

$('#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 回答