【问题标题】:jquery ajax isn't working on the correct orderjquery ajax 没有按正确的顺序工作
【发布时间】:2017-01-16 19:42:14
【问题描述】:

我正在尝试使用ajaxPHP 文件加载一些JSON 对象,但我的问题是我的javascript 代码没有按正确的顺序工作。这是我的代码:

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 在脚本的开头也是如此。

【问题讨论】:

  • 因为第一个需要时间加载
  • 因为它是异步 - 即启动ajax请求,然后在请求完成之前进行。更重要的是,您的第二个警报在 $(document).ready() 触发之前运行,这是一个稍后发生的事件,当文档准备好时。
  • 最好在$.ajax 中使用complete 处理程序

标签: javascript jquery ajax


【解决方案1】:

用 php 试试这个 cod 的 ajax 调用

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

  }
});

【讨论】:

    【解决方案2】:

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

    ajax({
    ...
    success: function(){
    ...
    secondAlert();
    };
    ...
    });
    
    function secondAlert(){
    alert("alert after jax call");
    };

    【讨论】:

      【解决方案3】:

      至于

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

      AJAX 是 Asynchronous JavaScript 和 XML 的首字母缩写词。这里的关键字是异步的。 AJAX 发送 HTTP 请求并继续以异步方式执行代码。 AJAX 请求的回调函数在请求完成并收到相应响应后执行。更多信息可here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-07
        • 2015-10-02
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        相关资源
        最近更新 更多