大家好,我的Jquery功能有问题。我有一个名为“var checkBit”的变量我执行$ ajax操作并基于此我将“checkBit”设置为1或0.但是当我提醒“checkBit”时,它总是显示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我有不同的功能,我执行。如果有更有效的方式,我喜欢学习。非常感谢你。
答案 0 :(得分: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);
}
答案 1 :(得分:0)
最后一次调用的问题:
alert(checkBit);
这是在ajax的响应完成之前发生的,因此每次都会显示0。我建议将一个回调函数传递给checkStatusType,以封装你想要对返回的checkbit进行的处理。