2010-02-10 26 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啓用這個工作。