Я столкнулся с той же проблемой, о которой упоминалось здесь: я пытаюсь подключить свое хранилище ExtJS 4.1 к REST API, но когда я удаляю запись из хранилища и, следовательно, вызываю метод HTTP DELETE, он отклоняется на стороне сервера, потому что HTTP-запрос, отправленный ExtJS, содержит тело. К сожалению, принятый ответ по приведенной выше ссылке недействителен для ExtJS версии 4 и выше.
Лучшее, что я достиг до сих пор, - это отправить пустой массив (буквально, []) как тело, но, конечно, это все равно отклоняется:
Это мой код:
Ext.define('TT.proxy.CustomRestProxy', {
alias: 'proxy.customrestproxy',
extend: 'Ext.data.proxy.Rest',
buildRequest: function(operation) {
var request = this.callParent(arguments);
if(operation.action === 'destroy')
{
delete request.operation.records;
}
return request;
}
});
defineStore = function(storeName, modelName, url) {
var storeProperties = {
extend: 'Ext.data.Store',
requires: modelName,
model: modelName,
id: storeName,
proxy: {
type: 'customrestproxy',
url: url,
batchActions: false,
noCache: false,
headers: { 'Content-Type': 'application/json' },
reader: {
type : 'json',
totalProperty: 'total',
successProperty: 'success',
root: 'data'
},
writer: {
type : 'json'
},
}
};
Ext.define(storeName, storeProperties);
};
Я бы согласился с любым ответом, который решает эту проблему, он не должен включать функции, специфичные для ExtJS, то есть также приветствуется перехват запроса AJAX или аналогичный метод.