我想从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之前,它会执行setCookie
函数,即使get_last_visitor()
函数没有返回任何值。函数在一段时间后返回值,但同时它会创建一个带有NAN的cookie。
任何人都可以建议一些解决方案吗?
答案 0 :(得分:2)
从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);
}