2012-07-22 121 views
0

我想把httpclient放在一個單獨的類中,並且想要返回創建數據的數組。 我的代碼Titanium Appcelerator HTTPClient return Array

function ServiceRequest(callback){ 
var data = []; 
var xhr = Titanium.Network.createHTTPClient({ 
    onload: function(e){ 
     //Ti.API.info("Received text: " + this.responseText); 

     var doc = this.responseXML.documentElement; 
     var elements = doc.getElementsByTagName("record"); 
     for (var r=0;r<elements.length;r++){ 
      var name = elements.item(r).getElementsByTagName("field").item(3).textContent; 
      var monteur = elements.item(r).getElementsByTagName("field").item(15).textContent; 
      var adresse =elements.item(r).getElementsByTagName("field").item(10).textContent; 
      var ort = elements.item(r).getElementsByTagName("field").item(4).textContent +" - "+ elements.item(r).getElementsByTagName("field").item(5).textContent; 
      var date = elements.item(r).getElementsByTagName("field").item(8).textContent; 
      var termin 
      if (date !="") { 
       var arrayDate = date.split("."); 
       var newdate = arrayDate[1]+"."+arrayDate[0]+"."+arrayDate[2]; 
       var temptermin = newdate +" - "+ elements.item(r).getElementsByTagName("field").item(9).textContent; 
       termin = temptermin; 
      }; 

      data.push({"name":name,"monteur":monteur,"adresse":adresse,"ort":ort,"termin":termin}); 

      callback(data); 
      }; 

    }, 
    onerror: function(e){ 

     Ti.API.debug(e.error); 
     alert(e.error); 
    } 
}); 

    xhr.open("GET","http://theurltomyxml.com",false); 
    xhr.send(); 

}

module.exports = ServiceRequest;

代碼段用於我的初始化

var ServiceRequest = require('ui/common/ServiceRequest'); 
request = new ServiceRequest(function(data){ 

}); 

Ti.API.info(request); 

但請求爲空,在我的onLoad函數數組填充有數據。 我如何等待httpRequest準備好比返回數據數組?

+0

請檢查您的API工作與否? – MRT 2012-07-23 09:22:50

回答

0

您可以像這樣使用自定義函數進行回調onload : callBack創建您自己的回調函數,或者您可以在forloop後放置callback(data);

for (var r=0;r<elements.length;r++){//==your code here for parsing } callback(data);