Titanium Appcelerator HTTPClient返回Array

时间:2012-07-22 21:30:10

标签: request titanium httpclient appcelerator

我想将httpclient放在一个单独的类中,并希望返回已建立数据的数组。 我的代码

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);

但请求为null,我的onLoad函数中的数组填充了数据。 我怎么能等到httpRequest准备就绪而不是返回数据数组?

1 个答案:

答案 0 :(得分:0)

您可以像这样使用自定义函数进行回调onload : callBack创建自己的回调函数,也可以将callback( data );放在forloop之后。

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