无法在StatusCode回调中设置值

时间:2015-06-07 07:40:34

标签: javascript jquery ajax

我正在尝试在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。

请告诉我如何检索标志的正确值。

1 个答案:

答案 0 :(得分:4)

来自文档:

  

跨域请求和dataType:" jsonp"请求不支持   同步操作

因此,即使您将async标记设置为false,它实际上也是异步执行的,并且在您flag检查发生时,请求尚未解决爱好。

请参阅jQuery.Ajax