微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Jquery .ajax()局部变量无法分配给全局

我有一个 jquery ajax代码如下:
$(document).ready(function() {
  var global_arr = new Array();
  $.ajax({
    url: 'result.PHP',type: 'post',dataType: 'json',success: function(data) {
       $.each(data,function(key,value) {
          global_arr.push(value.name);
       });
       alert(global_arr); //get correct value,works fine
     }
  }); //end of ajax function
  alert(global_arr); //get null,it doesn't work properly
});

注意提醒global_arr的行,为什么我不能从$.ajax()函数获取值?
谢谢任何人的帮助.

解决方法

Ajax需要时间来完成.函数执行时间不会太长.因此,当您在ajax请求之外获得警报时,ajax请求仍然使用时间来完成(在传输或服务器端操作中).

您始终可以等待ajax方法完成.

$(document).ready(function() {

 var global_arr = new Array();
 var complete = false;//flag to wait for ajax completion
 $.ajax({
  url: 'result.PHP',success: function(data) {
   $.each(data,value) {
      global_arr.push(value.name);
   });
   alert(global_arr); //get correct value,works fine
   complete = true;//mark ajax as complete
  }
 }); //end of ajax function

 (function runOnComplete(){
  if( complete ){//run when ajax completes and flag is true
   alert(global_arr);
  }else{
   setTimeout(runOnComplete,25);//when ajax is not complete then loop
  }
 })()
});

但是,最常见的方法是使用回调.

$(document).ready(function() {

 function runOnComplete(){//code executes once ajax request is successful
  alert(global_arr);
 }
 var global_arr = new Array();
 $.ajax({
  url: 'result.PHP',value) {
    global_arr.push(value.name);
   });
   alert(global_arr); //get correct value,works fine
   runOnComplete();//callback
  }
 }); //end of ajax function
});

原文地址:https://www.jb51.cc/ajax/151009.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐