我将此代码构建到calla Web服务。 现在我希望这个方法返回一个对象。
所以这是调用方法的命令:
Titanium.API.info("CHIAMO IL WS CON DATA NULL");
getDocument("CFDECTEST02",null, function(obj) {
Titanium.API.info("CALL BACK CHIAMATA "+ obj);
});
这是调用Web服务的方法:
function getDocument(fiscalCode, date){
var obj;
var xhr = Titanium.Network.createHTTPClient();
xhr.setTimeout(10000);
xhr.open('POST', "http://url");
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
var myObject = {
cf :fiscalCode,
date_last_synchronization :date
};
xhr.send(JSON.stringify(myObject));
xhr.onerror = function() {
Ti.API.info("SERVIZIO IN ERRORE");
Ti.API.info(this.responseText);
disattivaSemaforo();
};
xhr.onload = function() {
var obj = JSON.parse(this.responseText);
Ti.API.info(this.responseText);
return obj;
};
}
问题在于回调函数。因为方法getDocument正确调用了Web服务并且具有正确的obj,但是没有调用回调函数。
答案 0 :(得分:2)
你的getDocument函数需要第三个参数(它将是xhr请求的回调函数)
function getDocument(fiscalCode, date, success){
var obj;
var xhr = Titanium.Network.createHTTPClient();
xhr.setTimeout(10000);
xhr.open('POST', "http://url");
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
var myObject = {
cf :fiscalCode,
date_last_synchronization :date
};
xhr.send(JSON.stringify(myObject));
xhr.onerror = function() {
Ti.API.info("SERVIZIO IN ERRORE");
Ti.API.info(this.responseText);
disattivaSemaforo();
};
xhr.onload = xhr.onload = function() {
var obj = JSON.parse(this.responseText);
Ti.API.info(this.responseText);
success(obj);
};
}
然后你可以像之前那样调用getDocument函数
getDocument("CFDECTEST02",null, function(obj) {
Titanium.API.info("CALL BACK CHIAMATA "+ obj);
});
答案 1 :(得分:1)
您将其视为任何其他函数和任何其他参数。
您将它作为第三个参数传递给getDocument
,但您还没有在该函数中为其命名:
function getDocument(fiscalCode, date){
应该是:
function getDocument(fiscalCode, date, callback) {
然后你只需要打电话:
var obj = JSON.parse(this.responseText);
callback(obj);