2012-03-16 31 views
3

我試圖解析一個谷歌日曆供稿這樣解析谷歌日曆XML:與jQuery

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 

<p id="entries"></p> 

<script> 

$(document).ready(function(){ 
     $.ajax({ 
       url: 'http://www.google.com/calendar/feeds/339if8qgnu8pic5a2ru4moe5m0%40group.calendar.google.com/public/full', 
       dataType: 'xml', 
       success: parseXML 
     }); 
     function parseXML(xml){ 
       $(xml).find('entry').each(function() { 
        $('#entries').append($(this).find('title').text() + '<br />') 
       }); 
     } 
}); 
</script> 

</body> 
</html> 

但它不會找到任何元素。我究竟做錯了什麼?試着用一個簡單的XML文件,它的工作原理相同的代碼...

+0

這可能是因爲XML不正確建?我打開了Chrome的鏈接,通常Chrome會分析xml文檔並正確標記它們。它沒有這次... – c0d3Junk13 2012-03-16 14:12:15

+0

如果谷歌自己做錯了,似乎很奇怪。但是誰知道? – 2012-03-16 14:12:53

+0

我將xml複製並粘貼到帶有漂亮xml插件的記事本++中,當我要求它檢查XML時,它說:第2行的XML解析錯誤:輸入不正確UTF-8,指示編碼!字節:0xF6 0x72 0x73 0x61 – c0d3Junk13 2012-03-16 14:16:27

回答

1

當我測試自己,它似乎沒有找到任何元素,因爲沒有任何數據請求返回。由於關於無效編碼的評論,我當然認爲我錯過了一些東西......但是,我下載了 XML文檔並將其保存在您提供的HTML文件旁邊,做了以下更改:

url: 'full.xml',
完成此操作,(對我來說),段落元素現在填充了您可以在您定位的XML中看到的兩個條目。這當然是因爲跨域策略和不是什麼?

你有正確抓取XML多種選擇:)

  • 服務器端PHP的file_get_contents(/捲曲
    >>文件現在可以通過您的頁面AJAXed,因爲你是在同一個域。
    >>這個服務器端的請求也可以成爲這個頁面的一部分,例如:當頁面被加載時,PHP /無論在JavaScript中還是作爲一個變量回聲它,或者在一個隱藏的元素中。

  • 修改後的AJAX請求
    >>修改後的AJAX請求將用於跨域請求。作爲服務器有用,然後將不會執行請求,這可能是你的願望。如果是這樣的話,那麼我應該提到;我有一個名爲jquery.xdomainajax.js的文件,它允許跨域AJAX請求。我現在正在尋找消息來源,但我想我會趕緊這個帖子,以便你可以搜索自己,如果你願意。

    編輯:檢查this了。
    編輯2:經過一些簡短和粗心的測試後,我無法使用上面的jQuery解決方案插件工作......所以我的解決方案是將其拖到服務器端。

    下面是一些鏈接:

  • How to load a certain div of an external webpage on another webpage that is on a different domain
  • Get Websites Title
  • JQuery ajax cross domain call and permission issue



FYI:我使用的是Firefox 12.0

+0

嗨!非常感謝你關心這件事。自從我與此合作已有一段時間了。但我開始與服務器端拼湊,它仍然有效。但我的問題是,在真正的應用程序中,我颳了三個不同的日曆,並使頁面加載速度變得不必要的緩慢。所以我想通過刮客戶端。但我想我會最終有一些jQuery從主頁面加載後從PHP頁面獲取數據... – 2012-05-16 14:02:26

+1

是的,在這種情況下最好的想法可能是加載頁面和AJAX到PHP頁面,將返回正如你所說的那樣,被刮掉的XML。 我很高興你明白了:D – Spooky 2012-05-16 14:53:38