javascript - 无法在 StatusCode 回调中设置值

标签 javascript jquery ajax

我正在尝试在 ajax 调用的 StatusCode 中设置一个 bool 值,稍后我可以将其重新用于其他工作。这是我尝试过的:

    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 回调中显示“成功”,标志的值设置为 true,并且标志的警报显示 TRUE。

但是当我尝试在 if 条件检查中使用它时,该值变为 False。

请让我知道如何检索标志的正确值。

最佳答案

来自文档:

Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation

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

参见jQuery.Ajax

关于javascript - 无法在 StatusCode 回调中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30691209/

相关文章:

javascript - 如何启用和禁用 Ajax.Actionlink

javascript - AJAX 请求从包含对象的数组中提取信息

javascript - 从 ng-repeat 获取点击的项目

JavaScript 表单访问

javascript - 如何克隆 img src 属性中的 url 参数值?

javascript - 如何正确地将 State 传递给 React 中的不同函数?

javascript - 如何从 jquery 函数将 html 表行发送到 Controller 操作

javascript - Jquery隐藏表列不包含值

javascript - jQuery $.getJSON 不返回任何数据,但状态为 200 OK

ruby-on-rails - 如何通过 Ajax 请求处理 Rail 的 flash?