2009-08-16 124 views
1

我不确定这是否可行,我正在一个网站上工作,我无法访问任何类型的MYSQL或数据库。也没有任何PHP。便宜的客户端带有数据链接的多个XML?

无论我有3个XML文件与不同部分的数据,我已经放置了一个“钥匙”,相互匹配。我相信一个简单的IF语句会做匹配。

但是,调用3个XML文件并将数据从所有这些文件中提取出来并将它们组合成一个循环的最佳方式是什么?

这里是工作的拉他们的一个代码:

$.ajax({ 
    type: "GET", 
    url: "xml/classes.xml", 
    dataType: "XML", 
    beforeSend: function(){ 
    $('#classContainer').append("<p>Loading</p>");}, 
    success: function(xml) { 
    $(xml).find('monday').each(function(){ 

      var $classdate = $(this); 
      var title = $classdate.find("class").attr('title'); 

      var level = $classdate.find("class").attr('classLevel'); 
       var time = $classdate.find("time").text(); 
       var duration = $classdate.find("time").attr("duration"); 
       var hourofday = $classdate.find("time").attr("hourofday"); 
       var location = $classdate.find("location").text(); 



      var Monhtml = '<div class="classBlock">'; 

      Monhtml += '<p class="title">' + title + '<span class="loadingPic" alt="Loading" /> ' + ' </p>'; 
       Monhtml += '<p class="infoBar"> <strong>Time:</strong>' + time + '<span class="hour">'+ hourofday +'</span><br>'+'<strong>Duration:</strong>' + duration +' Minutes <br>' + '<strong>Location:</strong>' + location + '<br><strong>Instructor:</strong> </p>'; 
       Monhtml += '<p class="description"> <span class="level">' + level + '</span></p>' ; 

      Monhtml += '</div>'; 


      $('#classContainer').append($(Monhtml)); 
     }); 
     } 
    }); 

我想创建一个变量被放置在“monHTML”我有一组变量从3个XML文档的所有合并进入“monHTML”变种。

任何想法“?

回答

1

既然你不能合并服务器上的文件,您将需要执行3个独立的Ajax请求。困难在于进入同步3个请求。他们可以同步进行,但这样会肯定伤害了性能,并可能导致超时,更好的方式是将异步发送3个请求并调用回调一旦3个请求完成:。

var addreses = ['xml/file1.xml', 'xml/file2.xml', 'xml/file3.xml']; 

var ajaxQueue = { 
    files   : [], 
    checkFinished : function() { 
     if (this.files.length == addresses.length) { 
      // You can work with the 3 xml files here... 
      // this.files will be an array of elements that contain 
      // url and xml parameters. Check the url parameter to identify the 
      // corresponding xml. 
      // Remark: as the order in which the requests finish can vary, the array 
      // will not be sorted. 
     } 
    }; 
}; 

$(addreses).each(function(index, address) { 
    $.ajax({ 
     url  : address, 
     dataType : 'xml', 
     success : function(data) { 
      ajaxQueue.files.push({ url: address, xml: data }); 
      ajaxQueue.checkFinished(); 
     } 
    }); 
}); 
+0

这似乎是迄今为止最好的选择,另一个问题是如何将某些数据从1连接到另一个。 你能够连接它与选择哪个比较吗? – matthewb 2009-08-16 18:19:16

0

你的客户也许能够买得起原生XML数据库的几个是免费的,不错的 - eXist-org。是一个开始的地方,然后你可以使用XQuery来解决这个问题更容易。