我联系你是因为我陷入僵局。 我尝试使用“ScriptTag”从外部Web服务获取数据,但它不起作用,因为Web服务返回简单的json格式(No JSONP)。
你知道是否有另一种方法可以使用sencha检索json?
var helloWorld = new Ext.Application({
Parking: Ext.regModel('Parking', {
fields:[
{name:'parkingName'},
{name:'latitude'},
{name:'longitude'},
{name:'mapUrl'}
],
}),
launch: function() {
this.tabs = new Ext.TabPanel({
fullscreen: true,
dockedItems: [{xtype:'toolbar', title:'JSON Recovery'}],
tabBar: {
ui: 'light',
layout: {
pack: 'center'
}
},
items: [
{cls:'Page1', title:'Page1', html:'Page1'},
{
cls: 'list',
title: 'Page2',
xtype: 'list',
loadingText: 'Chargement',
itemTpl:'<div>{parkingName}</div>',
store: new Ext.data.Store({
autoLoad:true,
model: 'Parking',
proxy: {
type: 'scripttag',
url : 'http://walker.hotcity.lu/hotcity-central-server/webresources/parking/json?format-version=1_0&client-type=iPhone',
reader: {
type: 'json',
root: 'remoteObject'
},
}
}),
},
],
});
}
});
警告:资源被解释为脚本,但使用MIME类型application / json进行传输。
错误:未捕获的SyntaxError:意外的令牌:
谢谢。
凯文。
答案 0 :(得分:0)
您要找的是Ajax Proxy。文档中有一些关于如何使用它以及如何配置它的示例。默认阅读器是JSON,因此只要您的模型与通过JSON检索到的信息匹配,那么您就可以了。
您应该注意的另一件事是,JSONP可以绕过跨站点脚本,但如果您没有部署到walker.hotcity.lu域,那么浏览器将不会允许请求{{{ 3}}。服务器必须使用正确的same origin policy标头进行响应,以允许您的应用访问数据。