Javascript值在jquery.post之外改变
Javascript value changes outside jquery.post
我有一个奇怪的bug,已经让我抓狂了一段时间了。我有下面一段代码:
function isLoggedIn() {
var loggedIn = false;
var requestData = {
action: 'explore-webdesign-is-loggedin',
request_url: location.protocol + '//' + location.host + location.pathname,
async: false,
data: null
};
jQuery.post(ajaxurl, requestData, function(data) {
var dataObj = JSON.parse(data);
if (dataObj.success === true) {
loggedIn = true;
alert("1.) " + loggedIn);
}
});
alert("2.) " + loggedIn);
return loggedIn;
};
Javascript吐出两个警报,这很好,但第一个说'1.)真',而第二个给我'2.)假'。发生了什么事?
AJAX请求是异步的 -当AJAX正在进行时,您的最后一个警报正在执行-一旦AJAX完成,第一个警报就会结束(因此它在回调中)。
你不从一个异步方法的return
像你试图做的,相反,你会传递一个回调函数,一旦AJAX完成执行:
function isLoggedIn(callback) {
...
...
jQuery.post(ajaxurl, requestData, function(data) {
...
...
if (dataObj.success === true) {
loggedIn = true;
callback(loggedIn);
}
});
}
然后这样调用:
isLoggedIn(function(data) {
if (data) //user is logged in
});
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- Jquery POST未填充数组
- 如何在php文件中获取$.post-ajax传递的值
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 在POST中将html表作为csv提交
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何使用post方法从方法上传文件
- Django: AJAX + CSRF POST gives 403
- AJAX不会在文件上传后重定向到网页-POST方法
- 下载使用POST数据动态生成的文件
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 如何使用自定义标头跨域执行AJAX POST
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- jQuery在输入下验证post错误消息
- 在文本区域POST后解码JSON
- Node.js - POST to iFrame?
- 只有发送post/get,如果表单值已经改变
- 在asp.net mvc中使用ajax post将数据从JS传输到控制器中的函数.但观点并没有改变
- 如果SELECT值改变,发送POST邮件
- Javascript值在jquery.post之外改变