$ .post中的值设置不起作用

时间:2013-03-13 20:17:30

标签: jquery

我在数据库中使用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

3 个答案:

答案 0 :(得分:0)

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

您需要执行在回调函数中包含结果后必须执行的操作。

答案 1 :(得分:0)

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

答案 2 :(得分: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');           
});