2012-03-02 68 views
1

對於每個鏈接,例如用XML文檔中的內容更新鏈接文本

<a href="http://www.wowhead.com/item=78363">http://www.wowhead.com/item=78363</a> 

我想檢索URL末尾的href屬性中的ID。例如,78363,如上所示。使用這個ID,我想檢索一個XML頁面並根據ID從它獲取數據。 XML文檔的URL相同的鏈接項目,但&xml結束,所以:

http://www.wowhead.com/item=78363&xml 

從XML頁面,我需要如下所示的CDATA段內的值:

<name> 
<![CDATA[Vagaries of Time]]> 
</name> 

也就是「時間的迷失」。然後我需要在標籤內插入名稱:

<a href="http://www.wowhead.com/item=78363">Vagaries of Time</a> 

我該如何做到這一點?

+0

AGH!我的眼睛!請繼續格式化爲標準級別,謝謝。 – Ryan 2012-03-02 23:24:50

+0

對不起,我的英文不好,反正謝謝編輯。 – Edoras 2012-03-02 23:36:32

+0

還是其他一些想法?也許在xml頁面和腳本之間用代碼粘貼一個php文件,然後會根據腳本的請求獲取數據? '/get_xml.php?ID = 78363'?等等。 – Edoras 2012-03-03 00:19:01

回答

0

根據正則表達式遍歷鏈接,發送Ajax請求,使用正則表達式解析文本並完成。

$('a').each(function() { 
    var $this = $(this); 

    if(/item=\d+$/.test(this.href)) { 
     $.ajax({ 
      url: this.href + '&xml', 
      dataType: 'text', 
      success: function(data) { 
       $this.text(/<!\[CDATA\[([^\]]+)/.exec(data)[1]); 
      } 
     }); 
    } 
}); 

當然,你很可能想要添加一些錯誤檢查。另外,如果您的XML文檔比您發佈的示例更復雜,請考慮使用原生XML功能進行解析 - 我只是爲了簡單起見而使用了正則表達式。

+0

XML頁面是實時的:http://www.wowhead.com/item=78363&xml(我們從中獲取數據的站點不是我的)。 – Edoras 2012-03-02 23:45:05

+0

在此XML頁面上有更多選項CDATA: -/ – Edoras 2012-03-02 23:45:44

+0

@Edoras:好的,您需要用自己的服務器代理頁面;跨源策略不會讓您直接通過Ajax向其發送請求。至於其他CDATA,你需要的是第一個,所以沒問題。 – Ryan 2012-03-02 23:47:03