问题描述
||
我有一个面板,该面板应该从外部Web服务使用JSONP。
模型/VimeoModel.js
rpc.models.VimeoModel = Ext.regModel(\'rpc.models.VimeoModel\',{
fields: [
{name: \'id\',type: \'int\'},{name: \'title\',type: \'string\'}
]
});
views / VideoView.js
rpc.views.VideoView = new Ext.Panel({
id: \'VideoView\',title: \"Videos\",tpl: VimeoTemplate,iconCls: \"tv\",dockedItems: [{ xtype: \"toolbar\",title: \"Videos\"}],store: \'rpc.stores.VimeoStore\'
});
商店/VimeoStore.js
rpc.stores.VimeoStore = new Ext.data.Store({
id: \'VimeoStore\',model: \'rpc.models.VimeoModel\',proxy: {
type: \'scripttag\',url: WebService.Url + WebService.Vimeo.Read,reader: {
type: \'jsonp\',root: \'results\'
}
},autoLoad: true
});
模板/VimeoTemplate.js
var VimeoTemplate = new Ext.XTemplate([
\'<tpl for=\".\">\',\'<div>\',\'{title}\',\'</div>\',\'</tpl>\'
]);
不幸的是,页面加载时,没有数据填充到VideoView中。
WebService请求看起来像这样
http://rpc.infinitas.ws/Vimeo/Read?_dc=1308067234445&limit=25&callback=stcCallback1001
返回JSONP响应
stcCallback1001({\"results\":[{\"id\":25036464,\"title\":\"Power of A Surrendered Li...\"},{\"id\":25036610,\"title\":\"Child Dedication June 2011\"},{\"id\":24734142,{\"id\":24884833,\"title\":\"Finance Update June 2011\"},{\"id\":24587711,\"title\":\"Papua,Indonesia Sharing ...\"},{\"id\":24232427,\"title\":\"ICHTHUS: Coming King\"},{\"id\":23868560,\"title\":\"ICHTHUS: Healer\"},{\"id\":23486615,\"title\":\"ICHTHUS: Sanctifier\"},{\"id\":23211649,\"title\":\"ICHTHUS: SavIoUr\"},{\"id\":23867961,\"title\":\"Elder Announcement re: Br...\"},{\"id\":22998163,\"title\":\"Triumph of Grace: Risen L...\"},{\"id\":23687914,\"title\":\"Triumph of Grace: Reignin...\"},{\"id\":23692076,\"title\":\"KINGDOM Now: For Thine Is...\"},{\"id\":23694183,\"title\":\"KINGDOM Now: Deliver Us F...\"}],\"success\":true});stcCallback1001({\"results\":[{\"id\":25036464,\"success\":true});
启动Chrome Javascript控制台时,出现错误
阅读:1未捕获ReferenceError:stcCallback1001未定义
这是登台应用程序,如果您需要更多信息
http://rpcm.infinitas.ws
解决方法
问题出在您要返回的JavaScript中。您将输出两次回调。如果您在问题中单击jsonp链接,则应该看到两个stcCallback1001调用。由于回调在第一个回调之后被删除,因此第二个失败。
顺便说一句,您无需指定callbackParam。
, 请参阅我在其他问题(面板上未显示Sencha Touch JSONP存储数据)中提供的答案。
主要问题是要将代理从“ 5”更改为“ 6”。完成此操作后,JSONP代理应在向服务器发出请求之前负责创建适当的回调函数。
, 将读取器类型从\'jsonp更改为\'json \'应该会带回正确的结果。