[英]Variable value changing for no apparent reason
我知道这个问题的答案可能很明显,但是我似乎很困惑,所以我决定提一个问题。
在我的jQuery的$(document).ready
功能,我创建了一个叫做变量logged
。 我已经这样设置: var logged = 0;
接下来,我有一个代码块,它根据返回的数据将logged
变量设置为1
或不更改它。
$.post("url/script.php",
function(d, s){
if (s) {
if (d == "1") {
logged = 1;
}
if (d == "0") {
//Do stuff
}
} else {
//Do other stuff
}
console.log(logged); //Prints 1
});
我下面有一个if
语句,用于检查是否已记录日志是否为1
,但是上面的console.log
命令显示已logged
变量已重置为0
:
console.log(logged); //Prints 0
if (logged == 1) {
//Do stuff
}
有人知道为什么吗?
提前致谢。
我相信这是因为$.post()
是一个异步函数。 意味着,您的Javascript继续运行,而$.post()
仍在运行。 您的JS不等待它返回。 因此,到控制台日志logged
它仍设置为0
所以实际上,它没有被重置,只是还没有被设置为1
为了解决这个问题,您可以在post语句中设置一个变量,然后检查它是否完成。
var posting = $.post( url, function() );
posting.done(function( data ) {
//do something when complete
});
您可以在jQuery的API中了解更多相关信息-http: //api.jquery.com/jquery.post/
您还应该看看这个问题,该问题解决了如何使$.post()
成为同步调用, 以及如何使jquery“ $ .post”请求同步。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.