gpt4 book ai didi

javascript - 如何控制Javascript的执行

转载 作者:行者123 更新时间:2023-12-02 17:04:33 25 4
gpt4 key购买 nike

我想从 MySQL 表中获取最后一个 id,并在 Javascript 和 PHP 中使用该值创建一个 cookie。以下是我的代码。

if (getCookie("id")=='') {
last_visitor_id = get_last_visitor();
deviceID = last_visitor_id++;
setCookie("id", deviceID , 365);
$.ajax({
url:"save_device.php?deviceID="+deviceID+
"&websiteID="+WebsiteID+
"&width="+sWidth+
"&height="+sHeight,
success:function (datasource) {
// alert (datasource);
}
}
);
} else {
deviceID = getCookie("id");
alert ("working...." + deviceID);
}


function get_last_visitor(){
$.ajax({url:"get_last_visitor.php",success:function(last_visitor){
// last_visitor++;
//alert ("Last Visitor ID " + last_visitor);
return (last_visitor);
}});

}

代码有问题。在获取最后一个访客 ID 之前,即使 get_last_visitor() 函数没有返回任何值,它也会执行 setCookie 函数。函数在一段时间后返回该值,但同时它会创建一个带有 NAN 的 cookie。

有人可以提出一些解决方案吗?

最佳答案

从 ajax 调用中执行 return (last_visitor) 是没有意义的,因为它是异步的。执行流程不会等待 ajax 调用完成,下一行会立即执行,因此 get_last_visitor 始终返回 null。

您可以像这样更改代码以使用成功的ajax回调来执行您的逻辑

if (getCookie("id")==''){
$.ajax({url:"get_last_visitor.php"})
.done(function(last_visitor_id) {
deviceID = last_visitor_id++;
setCookie("id", deviceID , 365);
$.ajax({url:"save_device.php?deviceID="+deviceID+"&websiteID="+WebsiteID+"&width="+sWidth+"&height="+sHeight,success:function(datasource){
// alert (datasource);
}});
});
} else {
deviceID = getCookie("id");
alert ("working...." + deviceID);
}

关于javascript - 如何控制Javascript的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25383253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com