我最近在Sencha中启动了一个现有Web服务项目。 作为这项技术的新手,我在完成某些功能方面遇到了一些问题。
问题 我必须调用登录服务,请求如下:
http://domain.sub.com/Service.asmx/LoginService?body={"Username":"maj@smaj.com","Password":"p12345","Token":122112321123212123,"Method":"Login","LabId":"(null)","Hash":"fr3f33f3334348u8yy8hfuhdu8bdy7y89u89x8998c89789c87d78r9","DeviceType":"iPhone Simulator","DeviceId":"91BF3299-A94C-5AD3-9C35-A5C9BBBB6AA8","ApplicationType":"iPhone","Id":"998390494"}
但响应以XML格式显示为: 的响应:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://domain2.sub2.com/MobileWebService/">{"Id":"null","Message":"Logged In.","Status":true,"LoggedIn":true}</string>
我必须将此xml解析为json,以便从响应中获取:{"Id":"null","Message":"Logged In.","Status":true,"LoggedIn":true}
。
然后使用Status,LoggedIn和Id来验证登录。
我的想法 我不确定它是否正确,我正在尝试创建两个商店,xmlStore和JsonStore。
...
我可能听起来很天真,但这是我的问题;)
请指导。
修改
我意识到我正在潜水跨域请求。 是什么导致问题或混乱。如何处理它假设我没有跨域请求?
答案 0 :(得分:1)
如果您正在进行跨域请求,请在代理中使用scripttag代替ajax。这是一个json示例
离。
mApp.stores.onlineStore = new Ext.data.Store({
model: 'XPosts',
proxy: {
type: 'scripttag',
url : 'http://domain.com/data.json',
reader: new Ext.data.JsonReader({
root: 'pages'
}),
timeout: 3000,
listeners: {
exception:function () {
console.log("onlineStore: failed");
},
success: function(){
console.log("onlineStore: success");
}
}
},
autoLoad: true
});
离线商店:
mApp.stores.offlineStore = new Ext.data.Store({
model: 'XPosts',
proxy: {
type: 'localstorage',
id: 'appdata',
reader: new Ext.data.JsonReader({
root: 'pages'
})
},
autoLoad: true
});
然后,在你的发布会上:
this.stores.onlineStore.addListener('load', function () {
console.log("onlineStore: online");
mApp.stores.offlineStore.proxy.clear();
console.log("offlineStore: cleared");
this.each(function (record) {
console.log("offlineStore: adding record");
mApp.stores.offlineStore.add(record.data)[0];
});
mApp.stores.offlineStore.sync();
console.log("offlineStore: synced");
mApp.stores.offlineStore.load();
});
this.stores.onlineStore.load();
预先警告可能会有一些错误!