2012-05-30 51 views
0

我是Jquery和Ajax的新手。我正在調用Web服務並獲取XML數據作爲輸出。我想將XML數據轉換爲數組,以便我可以將這些數據與AJAX GRIDVIEW綁定。我已經發布了js代碼,來自webmethod的結果和所需的結果。任何將XML轉換爲數組的方式。謝謝你的幫助。Jquery Webservice方法調用

的JS代碼:

var jsonText = $.toJSON(subc); 
      $.ajax(
      { 
       type: "POST", 
       url: "frmFeesCollection.aspx/ServerSideMethod", 
       data: "{paraml: '" + jsonText + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       async: true, 
       cache: false, 
       success:function(result) 
       { 
        var gridView = $find('<%= grdpopup.ClientID %>'); 
        //Converting of XML to array here 
        var data = new Array(); 
        gridView.set_dataSource(data); 
        gridView.dataBind(); 
       }, 
       error: function(err) { 
        alert('Error:' + err.responseText + ' Status: ' + err.status); 
       } 
      }); 

從WebService的結果是這樣的:

<NewDataSet> 
<Table> 
<SUBCAT>1</SUBCAT> 
<PENDF>1</PENDF> 
<PAIDM>1000.00</PAIDM> 
</Table> 
<Table> 
<SUBCAT>1</SUBCAT> 
<PENDF>1</PENDF> 
<PAIDM>5000.00</PAIDM> 
</Table> 
<Table> 
<SUBCAT>6</SUBCAT> 
<PENDF>1</PENDF> 
<PAIDM>1000.00</PAIDM> 
</Table> 
<Table> 
<SUBCAT>6</SUBCAT> 
<PENDF>1</PENDF> 
<PAIDM>6000.00</PAIDM> 
</Table> 
</NewDataSet> 

,所需陣列將是這樣的:

data[0] = { SUBCAT: 1, PENDF: 1,PENDM: 1000.00}; 
data[1] = { SUBCAT: 1, PENDF: 1,PENDM: 5000.00}; 
data[2] = { SUBCAT: 6, PENDF: 1,PENDM: 1000.00 }; 
data[3] = { SUBCAT: 1, PENDF: 1,PENDM: 6000.00}; 

回答

1

感謝努力的人。終於找到了這個方法,現在它工作得很好。

success:function(result) 
       { 
        var gridView = $find('<%= grdpopup.ClientID %>'); 
        var xmlDoc = $.parseXML(result); 
        var xml = $(xmlDoc); 
        var customers = xml.find("Table"); 
        var data = new Array(); 

        $.each(customers, function (index, value) 
        { 
         var s =$(this).find("SUBCAT").text(); 
         var p =$(this).find("PENDF").text(); 
         var pm = $(this).find("PAIDM").text(); 
         data[index] = { SUBCAT: s, PENDF: p,PAIDM: pm }; 
        }); 
        gridView.set_dataSource(data); 
        gridView.dataBind(); 
        },