为什么如果使用JSON文件foo.json我的代码可以工作,但如果我将URL更改为something.com/foo.json它不起作用?
这在我的项目中有效:
var store = Ext.create('Ext.data.Store', {
model: 'Client',
autoLoad: true,
autoSync: true,
proxy: {
type: 'rest',
url : 'clients.json',
reader: {
type: 'json'
}
}
});
我想要的是替换URL的静态文件:
var store = Ext.create('Ext.data.Store', {
model: 'Client',
autoLoad: true,
autoSync: true,
proxy: {
type: 'rest',
url : 'http://rails-api.herokuapp.com/clients.json',
reader: {
type: 'json'
}
}
});
clients.json文件是来自http://rails-api.herokuapp.com/clients.json的复制/粘贴,它是相同的数据。
答案 0 :(得分:1)
你在哪里运行你的申请?你能跟踪http请求吗?你在javascript控制台上得到任何输出吗?
如果我不得不猜测我说你的问题可能与CORS =>有关。 http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
修改强> 请注意,如果您正在运行您的应用程序以及两个不同的Web服务器上的“后端”/ api,您只需要查看CORS或使用jsonp。
大多数人可能......
在这两种情况下,您只需使用“普通”ajax或休息代理。
答案 1 :(得分:0)
在服务器端我必须添加回调,看到这个问题sencha-seems-to-not-like-rails-json我还必须将类型从休息更改为jsonp并删除一些无用的代码,最后我的代码看起来像这样:
var store = Ext.create('Ext.data.Store', {
model: 'Client',
autoLoad: true,
autoSync: true,
proxy: {
type: 'jsonp',
url : 'http://rails-api.herokuapp.com/clients.json'
}
});
在服务器端:
def index
@clients = Client.all
respond_to do |format|
format.html
format.json { render :json => @clients, :callback => params[:callback] }
end
end