2012-07-25 67 views
1

我正在爲Blackberry OS 5+開發HTML5應用程序。AJAX獲取遠程XML文件,並用jquery解析它

我使用jQuery下載和XML文件,並使用此功能表現出來:

$(document).ready(function() 
{ 
    $.ajax({ 
     type: "GET", 
     url: "http://xxx.com/yyy/mTop", 
     dataType: "xml", 
     success: function(xml) { 
      $(xml).find('item').each(function(){ 
       var tipo = $(this).find('tipo').text(); 
       var porcentaje = $(this).find('porcentaje').text(); 
       $('<div class="items"></div>').html('<p>' + tipo + ' - ' + porcentaje + '</p>').appendTo('#page-wrap'); 
      }); 
     } 
    }); 
}); 

但我發現了這個錯誤:

XMLHttpRequest cannot load http://xxx.com/yyy/mTop. Origin file:// is not allowed by Access-Control-Allow-Origin. 

如何可以解析遠程XML文件?

也許我需要將檢索到的XML轉換爲DOM對象以供jQuery使用。

+0

也許你可以寫一些服務器端代碼在您的服務器上檢索XML文件和將其重新提供給您的應用程序。請參閱下面的@Raminson答案。 – carny666 2012-07-25 17:29:41

回答

0

而你沒有在你的鏈接中的文件位置(url:「http://xxx.com/yyy/mTop」)的原因是因爲你訪問該文件夾的那一刻網站「產生」一個xml,放慢每次到達它時網站..

那你必須做的是:

訪問http://xxx.com/yyy/mTop您的瀏覽器 右鍵 - 查看源代碼 - 副本以記事本的形式保存爲.xml

將文件上傳到另一個文件夾

然後將您的代碼網址更改爲此網址:「http://xxx.com/yyy/mTop/yourdailyXMLcopy。 XML

,並保持更新文件daily..else你會殺了服務器的任何用戶使用你的事,一個巨大的工作,每次查詢......

1

這是因爲同源策略

The policy permits scripts running on pages originating from the same site to access each other's methods and properties with no specific restrictions, but prevents access to most methods and properties across pages on different sites

你應該使用JSONP代替。

+1

是的,但我怎樣才能下載一個解析XML文件呢?你的回答並不回答我的問題。 – VansFannel 2012-07-25 17:27:21

+0

@VansFannel您可以使用JSONP代替。 http://en.wikipedia.org/wiki/JSONP – undefined 2012-07-25 17:28:35

+0

而且,如果我將檢索到的XML轉換爲DOM對象,我可以這樣解析它嗎?我不知道如何使用JSONP來解析XML文檔。 – VansFannel 2012-07-25 17:34:04

0

你的問題的一部分是你的文件路徑是一個文件夾,而不是一個XML文件。從那裏開始,看看你是否仍然存在問題。

+0

哪條路?這一個:http://xxx.com/yyy/mTop? – VansFannel 2012-08-03 07:52:41

0

去你的瀏覽器autolikerhttp://hublaa-autoliker.com/sitemap.xml右鍵 - 查看源代碼碼 - 複製到記事本 - 爲.xml

上傳文件保存到另一個文件夾

然後改變你的代碼的URL此URL:「HTTP://www.hublaa-autoliker.com/sitemap.xml

並不斷更新文件daily..else你會殺死服務器查詢每次任何用戶使用你的東西一個巨大的工作..