2014-02-18 108 views
0

我在獲取kendo ui數據源對象中的數組值時出現問題。我已經搜索並嘗試了許多解決方案,但在3周內還沒有找到解決方案。基本上我想獲得一個名爲'base64img'的數組的值,該數組在Kendo UI數據源中被指定爲一個字段,但是我一直無法訪問數組的值。 這裏是我的所有屬性: (如果有響應的錯誤,請忽略我修改爲安全起見) XML響應 -Kendo UI數據源限制

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <retrieveIncidentResponse xmlns="http://lal.lala.com/lala/messages/"> 
      <incidentStructure> 
       <geoLoc>LALA1</geoLoc> 
       <eventName>PARTY</eventName> 
       <incidentStatus>OPEN</incidentStatus> 
       <incidentCompltnDate>2012-01-02</incidentCompltnDate> 
      </incidentStructure> 
      <imageURI>IMAG0001.jpg</imageURI> 
      <imageURI>IMAG0002.jpg</imageURI> 
      <imageURI>IMAG0003.jpg</imageURI> 
      <imageURI>IMAG0004.jpg</imageURI> 
      <imageURI>IMAG0005.jpg</imageURI> 
      <imageBase64>/9j/4AAQSkZJRgABAQAAAQABAAD</imageBase64> 
      <imageBase64>/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkM</imageBase64> 
      <imageBase64>EQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJC</imageeBase64> 
      <imageBase64>IeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eH</imageBase64> 

劍道數據源代碼:

var parser = new DOMParser(); 
var xmlDoc = parser.parseFromString(soapXMLResponse, "application/xml"); 
var dsIncPictures = new kendo.data.DataSource({ 
    error: function (e) { 
     console.log("ds error: " + e.status); 
    }, 
    data: xmlDoc, 
    schema: { 
     type: "xml", 
     data: "soapenv:Envelope/soapenv:Body/retrieveIncidentResponse", 
     model: { 
      fields: { 
       imageURI: "imageURI", 
       imageBase64: "imageBase64" 
      }, 
      hasChildren: true 
     } 
    }, 
    pageSize: 50 
}); 

My attempts to get to the values: 
/*$drt.globalEditIncWPics.fetch(function() 
     { 
      $drt.globalEditIncWPics._data(0).imageBase64(0).val; 
      $drt.globalEditIncWPics.get("imageURI[0]"); 
      var field = $drt.globalEditIncWPics.get("imageURI[0]").imageURI[0].length; 
      console.log($drt.globalEditIncWPics.get().imageURI(0)); 
      var field = $drt.globalEditIncWPics.at(0); 
      console.log("VALUE: '" + field.text + "'"); 
      soapRequest.append(bind.soapRequestMessageFields(field.FieldName, field.value)); 
     });*/ 
     /*$drt.globalEditIncWPics.fetch(); 
     for (var idx = 0;idx<=$drt.globalEditIncWPics.length;idx++) 
     { 
      $drt.globalEditIncWPics.data[0].imageBase64[0].value; 

     }*/ 

這是Google開發者工具對象的結果: 沒有說過我被告知我的聲望不夠高,無法發佈圖片。 從開發人員工具粘貼代碼(從不知道它佔用太多空間): 基本上_prestineData有兩個數組,一個名爲imageBase64和imageURI,位於0 | 1數組點中,值在每個子數組點中顯示爲#text(0, 1,2,3等)。

+0

如果您可以發佈指向代碼的鏈接或創建jsFiddle示例,那麼您將更有可能得到一個很好的答案。也就是說,我不確定您發佈的XML如何自動解析到您期望的數組結構中。 – kiprainey

回答

1

在看看你的源,這裏有一個取功能,似乎工作,顯示所有4種值imageBase64

dsIncPictures.fetch(function() { 
    var data = dsIncPictures.data(); 
    for (var rowIndex = 0; rowIndex < data.length; rowIndex++) { 
     var imageBase64 = data[rowIndex].imageBase64; 
     for (var imageIndex = 0; imageIndex < imageBase64.length; imageIndex++) { 
      console.log(imageBase64[imageIndex]['#text']); 
     } 
    } 
}); 

的完整路徑的第一行的第一個圖像是data[0].imageBase64[0]['#text']

+0

謝謝大家。它展示了我真的需要學習如何通過JavaScript等方式從DOM中獲取數值。我一直把我的頭撞在牆上,永遠都很有趣,並且看到我離得很近(在某種程度上)。答案是正確的。再次感謝你。 – NutsAndBolts