Sencha touch XML 对 JSON 的响应
Posted
技术标签:
【中文标题】Sencha touch XML 对 JSON 的响应【英文标题】:Sencha touch XML response to JSON 【发布时间】:2011-11-24 14:44:01 【问题描述】:我最近在 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。
??
如何将 xml 响应存储在字符串中。 我将如何将此字符串传递给 Json Store(在 url 的位置?)我可能听起来很天真,但这是我的问题;)
请指导。
编辑:
我意识到我正在潜水跨域请求。 是什么导致了问题或混乱。假设我没有跨域请求如何处理?
【问题讨论】:
【参考方案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();
可能有一些错误,所以事先警告!
【讨论】:
以上是关于Sencha touch XML 对 JSON 的响应的主要内容,如果未能解决你的问题,请参考以下文章
Sencha Touch 和 WordPress BuddyPress API 之间的 JSON 解析问题
Sencha Touch ResumeEvents 是一场灾难