我正在尝试在ajax调用的StatusCode中设置一个布尔值,稍后我可以重新使用它来进行其他工作。这就是我试过的:
window.flag = false; // This is the flag I am trying to set inside Status Code 200
$(document).ready(function() {
$("#btnSubmit").click(function(){
jQuery.ajax({
'url': 'http://localhost:8080//Test/abc/',
dataType : 'jsonp',
crossDomain:true,
async:false,
statusCode: {
200: function() {
alert('Success'); // This popup is displayed
flag = true; // Here I am trying to set the flag to TRUE
alert(flag); // Here I am getting TRUE in alert
}
}
});
// But here the flag value is coming as FALSE; I am expecting TRUE value
if(flag == false){
alert('Failure');
}
});
});
警告弹出窗口显示“成功”'在StatusCode回调中,flag的值设置为true,flag的alert显示为TRUE。
但是当我在if条件检查中尝试使用它时,该值将变为False。
请告诉我如何检索标志的正确值。
答案 0 :(得分:4)
来自文档:
跨域请求和dataType:" jsonp"请求不支持 同步操作
因此,即使您将async
标记设置为false
,它实际上也是异步执行的,并且在您flag
检查发生时,请求尚未解决爱好。
请参阅jQuery.Ajax