AJAX没有将变量保存到javascript(异步问题)

时间:2014-11-07 01:19:04

标签: ajax asynchronous

为什么警告说text[0]undefined

这是我的代码:

var text = new Array;
$.ajax({
   url: 'engine1/api.php', 
   data: "", 
   dataType: 'json', 
   success: function(rows){
      text = rows;
   } 
});
alert(text[0]);

2 个答案:

答案 0 :(得分:1)

var text = new Array;
$.ajax({
   url: 'engine1/api.php', 
   data: "", 
   dataType: 'json', 
   success: function(rows){
      text = rows;
      alert(text[0]); // will work, this gets executed after you set text
   } 
});
//alert(text[0]); << don't put this here, it will get executed right after you send the request

答案 1 :(得分:0)

最后回答了我自己的问题,对于遇到这个问题的人来说,这就是我所做的:

由于ajax是异步的,因此alert(text[0])之前会执行text=rows

您可以将ajax设置为按程序运行:

$.ajax({ url: 'engine1/api.php', data: "", dataType: 'json', async: false; success: function(rows){...

以下这是您可以/应该将ajax设置为async:false的少数情况之一(因为您正在向客户端提供javascript / jquery)。