【问题标题】:Titanium Appcelerator HTTPClient return ArrayTitanium Appcelerator HTTPClient 返回数组
【发布时间】:2012-07-22 21:30:09
【问题描述】:

我想将 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;

我的初始化代码 sn-p

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

});

Ti.API.info(request);

但请求为空,我的 onLoad 函数中的数组已填充数据。 我怎样才能等到 httpRequest 准备好后再返回数据数组?

【问题讨论】:

  • 请检查您的 API 是否正常工作?

标签: request titanium httpclient appcelerator


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多