Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将xml加载到div时的AJAX竞争条件_Javascript_Jquery_Xml Parsing - Fatal编程技术网

Javascript 将xml加载到div时的AJAX竞争条件

Javascript 将xml加载到div时的AJAX竞争条件,javascript,jquery,xml-parsing,Javascript,Jquery,Xml Parsing,我正在创建的网站包含多个页面上使用的信息。我设置它的方式是将信息存储在xml文件中。然后,我使用AJAX加载xml文件,成功后,我调用一个解析方法,该方法将 似乎有一种竞赛条件正在发生。页面在xml文件完成解析之前完成加载。如果我在解析方法中添加一个警报,那么它可以正常工作(这就是为什么我认为它是一个竞争条件) 当我在网上搜索时,我看到了一些关于使用信号灯或超时的事情。这两个似乎对我都不太管用 如果在xml之前没有加载html页面,那么就没有可添加信息的div。 我还尝试在进入页面时加载不同的x

我正在创建的网站包含多个页面上使用的信息。我设置它的方式是将信息存储在xml文件中。然后,我使用AJAX加载xml文件,成功后,我调用一个解析方法,该方法将

似乎有一种竞赛条件正在发生。页面在xml文件完成解析之前完成加载。如果我在解析方法中添加一个警报,那么它可以正常工作(这就是为什么我认为它是一个竞争条件)

当我在网上搜索时,我看到了一些关于使用信号灯或超时的事情。这两个似乎对我都不太管用

如果在xml之前没有加载html页面,那么就没有可添加信息的div。 我还尝试在进入页面时加载不同的xml文件并存储数据,这样就不会在每次进入特定页面时都对数据进行解析,但我没有成功地解决这个问题


我感谢你提供的任何帮助

您可以等待使用jQuery加载DOM(您已经在使用jQuery):
$().ready()
-


您可以等待使用jQuery加载DOM(您已经在使用jQuery):
$().ready()
-


调查延期。在尝试运行success函数之前,它将确保两个调用都已完成。除非您正在创建某种在页面加载后更新的实时提要,否则最好将数据集成到服务器上。这消除了AJAX和事件驱动编程的所有复杂性。它还通过使HTML输出可缓存来节省计算量?你期望发生的事情是什么?你期望发生的顺序是什么?@MikeRobinson我在什么时候尝试过使用。但那似乎也不起作用。@Sam你建议我怎么做?看看延迟情况。在尝试运行success函数之前,它将确保两个调用都已完成。除非您正在创建某种在页面加载后更新的实时提要,否则最好将数据集成到服务器上。这消除了AJAX和事件驱动编程的所有复杂性。它还通过使HTML输出可缓存来节省计算量?您希望发生什么,以及您希望发生的顺序是什么?@MikeRobinson我在什么时候尝试过使用它。然后,这似乎也不起作用。@Sam您建议我怎么做?目前,我在ready函数中包含了所有这些。DOM没有准备好,而xml没有及时准备好页面加载,这似乎不是一个问题。DOM没有准备好似乎不是问题,而xml没有及时准备好页面加载。
function loadXML(link) {

$('#div1').load(link);
loadImage(link);

if (link == "news.html") {
    $.ajax({
        type: "GET",
        url: "news.xml",
        dataType: "xml",
        success: newsParser
     });
  }
}
$(document).ready(function(){ 
  $('#div1').load(link); 
  loadImage(link); 
  //etc..
}