繁体   English   中英

变量值无明显变化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM