我在数据库中使用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
答案 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');
});