Titanium Can';t使用Tianium从WCF数据服务读取数据

Titanium Can';t使用Tianium从WCF数据服务读取数据,titanium,Titanium,我创建了一个返回JSON格式的WCF数据服务 公共静态void InitializeService(DataServiceConfiguration配置) { //TODO:设置规则以指示哪些实体集和服务操作是可见的、可更新的等。 //示例: config.SetEntitySetAccessRule(“,EntitySetRights.AllRead”); config.SetServiceOperationAccessRule(“,ServiceOperationRights.All”);

我创建了一个返回JSON格式的WCF数据服务

公共静态void InitializeService(DataServiceConfiguration配置) { //TODO:设置规则以指示哪些实体集和服务操作是可见的、可更新的等。 //示例: config.SetEntitySetAccessRule(“,EntitySetRights.AllRead”); config.SetServiceOperationAccessRule(“,ServiceOperationRights.All”); config.DataServiceBehavior.MaxProtocolVersion=DataServiceProtocolVersion.V2; }

我使用Tianium连接到web服务以获取数据

var label=Titanium.UI.createLabel({ top:300 });

var数据=[];
//连接到WCF数据服务
var xhr=Titanium.Network.createHTTPClient();
var theURL=http://localhost:4338/DataService.svc/Orders?$format=json';
var-json;
xhr.onload=函数(){
var json=json.parse(this.responseText);
};
for(var i=0;i

错在哪里

首先,您必须知道HTTP请求是异步的,这意味着尽管获取响应需要一些时间(取决于internet连接、服务器速度、数据大小等),但随后的代码将被执行。如果请求是同步的,它将在加载时阻止应用程序和任何用户交互。这就是为什么客户机提供在某些状态更改时触发的回调

您的代码

var数据=[];
//连接到WCF数据服务
var xhr=Titanium.Network.createHTTPClient();
//只是猜测,但是美元是必要的吗?
var theURL=http://localhost:4338/DataService.svc/Orders?$format=json';
//您在这里“全局”定义json
var-json;
xhr.onload=函数(){
//您正在的范围内定义json变量
//onload函数,因此无法从外部访问它
//此外,您正在覆盖全局范围的json
//在这一职能范围内
var json=json.parse(this.responseText);
};
//此时,json尚未定义
//此外,此代码在xhr.onload激发之前执行
for(var i=0;i

它应该如何工作

var数据=[];
var theURL=http://localhost:4338/DataService.svc/Orders?format=json';
var xhr=Titanium.Network.createHTTPClient();
xhr.onload=函数(){
//假设您有一个有效的json响应
var json=json.parse(this.responseText);
for(var i=0;i
var data = [];

// Connecting to WCF data service 
var xhr = Titanium.Network.createHTTPClient();
var theURL = 'http://localhost:4338/DataService.svc/Orders?$format=json';
var json;
xhr.onload = function (){
    var json = JSON.parse(this.responseText); 
};

for (var i = 0 ; i < json.length; i++)
{
    data.push(json[i]);
}
label.text = data[0].OrderID;
xhr.open('Get',theURL);