我需要通过跨域POST请求加载存储
Ext.define('MyDesktop.desktop.store.DesktopShortcutStore', {
extend: 'Ext.data.Store',
requires: [
'MyDesktop.desktop.model.DesktopShortcutModel'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
storeId: 'DesktopShortcutStore',
model: 'MyDesktop.desktop.model.DesktopShortcutModel',
autoLoad: false,
proxy: {
type: 'ajax',
url: getApiUrl() + 'account/desktop-shortcuts-list',
cors: true,
reader: {
type: 'json',
rootProperty: 'items',
successProperty: 'success'
},
paramsAsJson: true,
actionMethods: {
read: 'POST'
},
extraParams: {
fff: 'zzz'
}
}
}, cfg)]);
}
});
但我有没有“fff”参数的OPTIONS请求。
通过jQuery跨域工作正常。
使用
Ext.Ajax.useDefaultXhrHeader = false;
Ext.Ajax.cors = true;
没有帮助。
我在文档中找不到任何信息。
答案 0 :(得分:0)
这应该是最简单的解决方案。通过代理和POST直接加载商店可能需要一些覆盖,不确定它是否值得付出努力(需要更多调查)。
var store = ...;
Ext.Ajax.request({
method: 'POST',
url: '...',
withCredentials: true, // for identity cookies
success: function(response) {
// given json array is returned
var data = Ext.decode(response.responseText);
Ext.each(data, function(r) {
store.add(r);
});
}
});