2010-02-10 81 views
1

我有一个问题,关于解析XML。jquery,XML到HTML

我希望得到一些XML数据的HTML,但我有一个问题,我可以从本地XML得到这个数据,当我试图从外部URL数据这是行不通的,例如从

http://www.w3schools.com/XML/plant_catalog.xml

这是jquery的:

<script type="text/javascript"> 
     $(document).ready(function(){ 
      $.ajax({ 
       type: "GET", 
       url: "http://www.w3schools.com/XML/plant_catalog.xml", 
       dataType: "xml", 
       success: function(xml) { 
        $(xml).find('CATALOG').each(function(){ 
         var title = $(this).find('BOTANICAL').text(); 
         var url = $(this).find('BOTANICAL').text(); 
         $('<div class="items" id="link_"></div>').html('<a href="'+url+'">'+title+'</a>').appendTo('#page-wrap'); 

        }); 
       } 
      }); 
     }); 
    </script> 

和HTML:

<div id="page-wrap"> 
     <h1>Reading XML with jQuery</h1> 
    </div> 

非常感谢!

回答

2

不能请求来自不同的域文件出于安全原因..

引述http://api.jquery.com/jQuery.ajax/

当数据从远程服务器检索(其仅可以使用脚本或JSONP数据类型

+0

这意味着,我不能使用这种类型的网址,我不得不使用类似“url:”../site.xml“ ? – AlexC 2010-02-10 14:07:31

+0

是的,只有本地到您的域的网址。它可能是相对的网址在你的域内,如url:'/somepath/somefile.xml'。相对URL(以/开头)从域根开始,而不是从当前文件夹开始 – 2010-02-10 14:12:02

2

你也可以使用一个本地文件服务器上的包装,以避免这些跨域问题。

$.ajax({ 
    type: "GET", 
    url: "catalog.php", 
... 

当地catalog.php

<?php 
    header("Content-Type: text/xml"); 
    echo file_get_contents("http://www.w3schools.com/XML/plant_catalog.xml"); 
?> 

请注意,您的服务器必须有url fopen启用这个工作。