2013-02-14 94 views
0

我正在努力讓我們的web服務使用ajax來嘗試加速某些頁面。下面是我正在工作的一個示例,但我想讓這個更容易在具有不同web服務的多個頁面上使用。在不知道節點名稱的情況下是否有解析XML的方法?所以在我的例子中,我做了$(this).find('ID')。text(),但我想要做的只是找到第一個節點並動態獲取其名稱,然後能夠創建我的包含名稱的標題行和包含值的值行。 我也想這樣做,而不知道有多少列和/或行。jquery ajax解析XML沒有發現

  $.ajax({ 
      url: 'http://localhost:51558/Service1.asmx/GetData', 
      type: 'GET', 
      dataType: 'xml', 
      success: function (xml) { 
       var tbl = '<table border="1"><tr><th>ID</th><th>StartDate</th><th>EndDate</th><th>Title</th></tr>'; 
       $(xml).find('SiteMessages ').each(function() { 
        tbl += '<tr><td>' + $(this).find('ID').text() + '</td>'; 
        tbl += '<td>' + $(this).find('StartDate').text() + '</td>'; 
        tbl += '<td>' + $(this).find('EndDate').text() + '</td>'; 
        tbl += '<td>' + $(this).find('Title').text() + '</td></tr>'; 
       }); 
       $('#datagrid').html(tbl + '</table>'); 
       alert('success'); 
      } 
     }); 

* 編輯: *我已經看過jquery.parseXML,但我不能找到它並沒有使用類似$標題= $ xml.find(「標題」)的任何例子;

+0

這是否幫助? http://www.devx.com/xml/Article/11866 – 2013-02-14 02:16:48

回答

0

您可以使用XML DOM在節點中導航。看到http://www.w3schools.com/dom/dom_node.asp

+0

我昨天晚上想到了這一點,並開始編寫一個遞歸方法來遍歷所有節點及其子節點。我仍然需要使用.find,但是我可以用$(this).find(this.nodeName).text()來實現。這至少會給我在處理XML方面帶來一定的靈活性。謝謝。 – 2013-02-14 13:06:27

0

我會建議你使用JSON和發送模式陣列,每個響應

{"columns":["ID","StartDate","EndDate","Title"], 
    "data" :[ [1, "12/12/2012", "1/1/2013","Manager"]] 
} 
+0

當有人談論ajax時,Json似乎是要回答的問題,但在我的情況下,我堅持使用XML。謝謝。 – 2013-02-14 13:07:22

+0

爲什麼卡在xml中? JSON體積更小,更易於使用,並且每個服務器languagae都支持JSON – charlietfl 2013-02-14 13:26:49

+0

我被XML困住了,因爲這將是真正的web服務返回的結果。自從我找到了一個將XML轉換爲Json的函數,並且我已經編寫了我的基本函數來執行我想要的操作,並且只需要將URL傳遞給webservice即可。 – 2013-02-14 20:32:18