2014-02-18 93 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