2017-01-16 74 views
0

我想从PHP文件使用ajax,一些JSON对象加载但我的问题是我的javascript代码不正确的顺序工作。这里是我的代码:jquery ajax在正确的顺序不工作

var requests; 
$(document).ready(function(){ 
    setInterval(function(){ 
     $.ajax({ 
     url: "test2.php", 
     success: function(result){ 
     requests = JSON.parse(result); 
     alert(requests); 
     } 
     }); 
    }) 
}); 
alert(requests); 

Here is the first alert我过得好页面加载我和here is the second alert

我的问题是,为什么AJAX之前执行的最后一行警报

注:这是一个我的项目的一个小例子,我真正的错误是我无法加载一些我需要使用ajax的数组,因为它在控制台中显示为未定义,即使ajax在脚本的开头。

+0

,因为第一个需要时间来加载 –

+3

可能重复[如何返回来自异步调用的响应?](http://stackoverflow.com/questions/14220321/how-do-i异步调用响应) –

+0

因为它是*异步* - 即启动ajax请求,然后在请求完成之前继续执行。更重要的是,第二次提醒在'$(document).ready()'触发之前运行,这是一个稍后发生的事件,当文档准备就绪时。 –

回答

0

避免这种情况的最好方法是创建一个函数,在该函数中放置第二个警报。并在ajax调用的成功方法中调用该函数。 例如

ajax({ 
 
... 
 
success: function(){ 
 
... 
 
secondAlert(); 
 
}; 
 
... 
 
}); 
 

 
function secondAlert(){ 
 
alert("alert after jax call"); 
 
};

1

试试这个鳕鱼Ajax调用使用PHP

$.ajax({ 
 
    type: "method", // post or get 
 
    url: "file url", 
 
    dataType: "json", 
 
    success: function(data){ 
 
    
 
    }, 
 
    error: function(){ 
 

 
    } 
 
});

0

至于

我的问题是,为什么AJAX

AJAX是异步 JavaScript和XML的缩写之前执行的最后一行的警报。这里的关键字是异步的。 AJAX发送HTTP请求并以异步方式持续执行代码。在请求完成并收到相应的响应后,执行AJAX请求的回调函数。有更多的信息here