2010-11-08 169 views
4

我打破了我的頭這一段時間了,我不知道我做錯了什麼。 該場景如下,我正在使用swfupload通過webservice上傳帶有進度條 的文件。 webservice需要返回生成的縮略圖的名稱。 這一切都很順利,雖然我更喜歡在json中獲取返回的數據(可能稍後會在swfupload js文件中更改它),但默認的xml數據也可以。從asp.net解析簡單的XML與jQuery的web服務

所以當上載完成web服務返回以下XML作爲預期(注意我刪除了Web服務的命名空間):

<?xml version="1.0" encoding="utf-8"?> 
<string>myfile.jpg</string> 

現在我要分析此結果與jQuery,以爲下面會做:

var xml = response; 
alert($(xml).find("string").text()); 

但我無法獲得字符串值。我嘗試了很多組合(.html(),.innerhtml(),response.find(「string」).text(),但似乎沒有任何工作。這是我第一次嘗試通過jquery解析xml,所以也許我在做什麼fundemantally錯了,‘響應’填充了XML。

我希望有人能幫助我與此有關。 感謝您的時間。

親切的問候, 馬克

回答

2

我認爲$(xml)正在尋找一個與XML匹配字符串值的選擇器的dom對象,所以我想它會回到空或空?

的第一個插件下面提到xmldom看起來相當不錯,但如果你返回的XML還真是簡單,如你上面的例子,一個位串解析可能會更快,這樣的:

var start = xml.indexOf('<string>') + 8; 
var end = xml.indexOf('</string>'); 
var resultstring = xml.substring(start, end); 

this answer這個問題: How to query an XML string via DOM in jQuery

報價:

有一個2種方法來處理這個。

  1. 轉換XML字符串到DOM,使用這種plugin解析它還是遵循這一tutorial
  2. 使用該plugin轉換XML以JSON。
+0

非常感謝您的解決方案,我會選擇現在的字符串解析方法,甚至沒有想到這一點。當對象變大時,我會去xml to json插件。謝謝救了我的一天! – Mark 2010-11-08 17:46:05

0

jQuery的不能解析XML。如果您將一個包含XML內容的字符串傳遞到$函數中,它通常會嘗試將其解析爲HTML,而不是使用標準innerHTML。如果你確實需要解析一個完整的XML字符串,你將需要特定於瀏覽器而不是全球支持的方法,如new DOMParserXMLDOM ActiveXObject,或者一個包裝它們的插件。

但是您幾乎從不需要這樣做,因爲XMLHttpRequest應該返回responseXML屬性中的完全解析的XML DOM。如果您的Web服務正確設置了Content-Type響應標頭以告訴瀏覽器返回的是XML,那麼回調函數的data參數應該是XML Document對象而不是字符串。在這種情況下,您應該可以使用您的示例find()text(),而且沒有問題。

如果服務器端沒有返回XML Content-Type標題,但無法解決該問題,則可以將ajax settings中的選項type: 'xml'作爲重寫。