2014-02-16 31 views
0

我有一個Ajax函數與XML數據類型的響應。我需要將此響應分配爲下拉控件。我如何從XML響應中訪問Id和Name的值?我試過數據[i] .getElementsByTagName(「Id」)[0] .childNodes [0] .nodeValue;這不會給我任何值ajax響應文本XML到HTML

$.ajax({ 
    url: 'POWeb.asmx/GetStates?countryId=' + thisval, 

    success: function (data) { 
      var x = data.getElementsByTagName("KeyValueInt"); 
      var html = '<select>' 

      for (i= 0; i < length; i++) { 
       item = data[i].getElementsByTagName("Id")[0].childNodes[0].nodeValue; 
       value = data[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue; 
       html += '<option value=' + item + '>' + value + '</option>'; 
      } 
      html += '</select>'; 
      alert(html); 
}, 
error: function (XMLHttpRequest, textStatus, errorThrown) { 
    //some stuff on failure 
} 
}); 


<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfKeyValueInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> 
<KeyValueInt> 
    <Id>51</Id> 
    <Name>Ontario</Name> 
</KeyValueInt> 
<KeyValueInt> 
    <Id>52</Id> 
    <Name>Quebec</Name> 
</KeyValueInt> 
<KeyValueInt> 
    <Id>53</Id> 
    <Name>Nova Scotia</Name> 
</KeyValueInt> 

回答

2

你錯過了結束標記</ArrayOfKeyValueInt>在XML文件中!而data不是一個數組,它是一個DOM對象。下面的代碼應該是okey:

success: function(data) { 
     var x = data.getElementsByTagName("KeyValueInt"); 
     var html = '<select>' 

     for (i= 0; i < x.length; i++) { 
      item = x[i].getElementsByTagName("Id")[0].childNodes[0].nodeValue; 
      value = x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue; 
      html += '<option value=' + item + '>' + value + '</option>'; 
     } 
     html += '</select>'; 
     alert(html); 
},