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
});

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...