我有一个数据存储,它从我服务器上的 JSON API 获取信息。当我在 WebKit/Chrome 中运行代码时,一切似乎都运行良好,但如果我将用户代理更改为 iPhone 4.1 等,则似乎 JSON 请求设置不正确。它不是发送获取 JSON 的请求,而是发送请求并获取 HTML 呈现的页面。
这是我定义的商店:
Product.ProductStore = new Ext.data.Store({
model: 'Product',
proxy: {
type: 'ajax',
url: '/admin/products.json',
reader: {
type: 'json',
root: 'products'
}
},
autoLoad: true,
storeId: 'productStore',
getGroupString: function(record){
return record.get('vendor')[0];
}
});
所以我真正想让这家商店做的是向/admin/products.json 发送一个请求,它在桌面上按预期工作。但是当我在我的模拟器甚至设备上运行它时,它似乎只是将请求发送到/admin/products 而返回 HTML。
有人建议这是一个 Rails 服务器问题,我需要为我的请求设置内容类型。问题是我该怎么做?
我已经尝试了以下方法,但它似乎也不起作用:
Product.ProductStore = new Ext.data.Store({
model: 'Product',
proxy: {
type: 'ajax',
url: '/admin/products.json',
// Trying to set the headers for the request -- not working
headers: {
'Content-Type': 'application/json'
},
reader: {
type: 'json',
root: 'products'
}
},
autoLoad: true,
storeId: 'productStore',
getGroupString: function(record){
return record.get('vendor')[0];
}
});
我能否简单地将 AJAX 请求替换为我自己的内容类型 header 设置正确的请求?如果是这样,是否有一些示例使用商店及其自己的自定义 AJAX 请求?
最佳答案
应该是
'Accept' : 'application/json'
Accept 是客户端用来告诉服务器它喜欢什么媒体类型的 header 。 Content-Type 是服务器作为响应的一部分发送的 header ,告诉客户端数据是什么。
关于javascript - 在 SenchaTouch 中为 Ext.data.Store 代理设置请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5313635/