有没有办法输出我的商店在sencha touch 2中读取的json-string?
我的商店没有阅读记录,所以我想看看哪里出了问题。 我的商店定义如下:
Ext.define("NotesApp.store.Online", {
extend: "Ext.data.Store",
config: {
model: 'NotesApp.model.Note',
storeId: 'Online',
proxy: {
type: 'jsonp',
url: 'http://xxxxxx.com/qa.php',
reader: {
type: 'json',
rootProperty: 'results'
}
},
autoLoad: false,
listeners: {
load: function() {
console.log("updating");
// Clear proxy from offline store
Ext.getStore('Notes').getProxy().clear();
console.log("updating1");
// Loop through records and fill the offline store
this.each(function(record) {
console.log("updating2");
Ext.getStore('Notes').add(record.data);
});
// Sync the offline store
Ext.getStore('Notes').sync();
console.log("updating3");
// Remove data from online store
this.removeAll();
console.log("updated");
}
},
fields: [
{
name: 'id'
},
{
name: 'dateCreated'
},
{
name: 'question'
},
{
name: 'answer'
},
{
name: 'type'
},
{
name: 'author'
}
]
}
});
答案 0 :(得分:1)
您可以通过代理获取服务器返回的所有数据,如下所示:
store.getProxy().getReader().rawData
答案 1 :(得分:1)
您可以通过lasaro建议获取服务器返回的所有数据(javascript对象):
store.getProxy().getReader().rawData
要获取原始数据的JSON字符串(阅读器应该是JSON阅读器),您可以这样做:
Ext.encode(store.getProxy().getReader().rawData)
//or if you don't like 'shorthands':
Ext.JSON.encode(store.getProxy().getReader().rawData)
您也可以通过处理商店加载事件来获取它:
// add this in the store config
listeners: {
load: function(store, records, successful, operation, eOpts) {
operation.getResponse().responseText
}
}
答案 2 :(得分:0)
据我所知,如果您使用已配置的proxy
,则无法明确观察您的回复结果(如果您手动发送Ext.Ajax.request
或Ext.JsonP.request
,这显然很容易)
但是,您仍然可以通过浏览器的开发者工具观看结果。
适用于Google Chrome:
当您启动应用程序并假设您的请求已完成时。切换到网络标签。左侧面板上的高亮链接是我从中获取数据的API网址。在右侧面板中,选择响应。响应结果将出现在那里。如果你什么都没有,很可能是你发出了错误的请求。
希望这有帮助。
答案 3 :(得分:0)
您的响应json应该采用以下格式的Ajax请求
{results:[{"id":"1", "name":"note 1"},{"id":"2", "name":"note 2"},{"id":"3", "name":"note 3"}]}
id和name是模型NOte的属性。
对于jsonp,
在您的服务器端,从'回调'中获取价值。该值包含回调方法的名称。然后将该方法名称连接到结果字符串并写入响应。
然后json字符串应采用以下格式
callbackmethod({results:[{"id":"1", "name":"note 1"},{"id":"2", "name":"note 2"},{"id":"3", "name":"note 3"}]});