繁体   English   中英

无法更改JQuery ajax函数中的全局变量

[英]Failed to change a global variable in JQuery ajax function

 $( document ).ready(function() {
        function doAjax( time_from, time_to ){
            var dataRsp;
            $.ajax({
              url: "/query/"+time_from+"/"+time_to,
              type: "GET",
              dataType: "json",
              success: function(data){ dataRsp = data; },
            });
            alert(JSON.stringify(dataRsp));
        };
      doAjax(0,0);
  }

上面是我的代码片段,我需要将ajax响应数据存储在全局变量dataRsp中,但是我做不到这一点,我对JS和jquery中的变量作用域感到非常困惑,非常感谢。

将警报放入成功回调中

    $( document ).ready(function() {
        function doAjax( time_from, time_to ){
            var dataRsp;
            $.ajax({
              async: false,
              url: "/query/"+time_from+"/"+time_to,
              type: "GET",
              dataType: "json",
              success: function(data){ 
                  dataRsp = data; 
                  return(JSON.stringify(dataRsp)); 
              }
            });

        };
      var x =doAjax(0,0);
      alert(x);
  }

或者另一个选择是添加async: false参数。 并且还,success不是必需的。

// GLOBAL
var dataRsp;
$( document ).ready(function() {
    function doAjax( time_from, time_to ){
        // var dataRsp;
        $.ajax({
          url: "/query/"+time_from+"/"+time_to,
          type: "GET",
          dataType: "json",
          success: function(data){ 
              dataRsp = data; 
              // YOU GET IT HERE
              alert(JSON.stringify(dataRsp)); 
          },
          // Add this if you want to get it just after the "ajax" but not in the callback of "success"
          async: false
        });
        // ALWAYS NULL if async==true as it's not returned yet.
        // alert(JSON.stringify(dataRsp)); 
    };
  doAjax(0,0);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM