Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Restful посылает POST вместо DELETE (https://javascript.ru/forum/extjs/11064-restful-posylaet-post-vmesto-delete.html)

Gant 04.08.2010 22:36

Restful посылает POST вместо DELETE
 
добрый вечер, помогите разобраться почему при использовании restful он посылает метов POST, а не DELETE. вот код

function index(){

var reader = new Ext.data.JsonReader({
idProperty:'id',
fields: [
{ name: 'id', type: 'int' },
{ name: 'mark', type: 'string', allowBlank: false },
{ name: 'model', type: 'string' },
{ name: 'description', type: 'string' },
{ name: 'release_year', type: 'string' }
],
root:'data',
remoteGroup:false,
remoteSort: false
});

var writer = new Ext.data.JsonWriter({
encode: false
});

var editor = new Ext.ux.grid.RowEditor({
saveText: 'Update'
});

var ds = new Ext.data.GroupingStore({
autoDestroy: true,
reader: reader,
writer: writer,
restful: true,
proxy : new Ext.data.HttpProxy({
url: '/admin/cars.json'

}),
sortInfo: { field: 'id', direction: 'ASC' },
groupField: 'mark',

});

var grid = new Ext.grid.GridPanel({
width: 860,
height: 400,
frame: false,
renderTo: 'grid',
autoScroll: true,
plugins: [editor],

ds: ds,

columns: [
new Ext.grid.RowNumberer(),
{ header: 'id', dataIndex: 'id', id: 'id', sortable: false, width: 30 },
{ header: 'Mark', dataIndex: 'mark', sortable: true, width: 100,
editor: new Ext.form.TextField({ allowBlank: false }) },
{ header: 'Model', dataIndex: 'model', sortable: true, width: 100,
editor: new Ext.form.TextField({ allowBlank: false }) },
{ header: 'Description', dataIndex: 'description',
editor: new Ext.form.TextField({ allowBlank: false }) },
{ header: 'release_year', dataIndex: 'release_year' }
],

view: new Ext.grid.GroupingView({
forceFit: true,
showGroupName: false,
enableNoGroups: false,
enableGroupingMenu: false,
hideGroupedColumn: false,
groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
}),

tbar: [{
text: 'Add Car',
handler : onAdd
}, '-', {
text: 'Delete',
iconCls: 'silk-delete',
handler: onDelete
}, '-'],
viewConfig: {
forceFit: true
}

});

/**
* onAdd
*/
function onAdd(btn, ev) {
var m = new grid.store.recordType({
mark : '',
model: '',
description : '',
release_year : (new Date()).clearTime()
});
editor.stopEditing();
grid.store.insert(0, m);
editor.startEditing(0);
}

/**
* onDelete
*/
function onDelete() {
var rec = grid.getSelectionModel().getSelected();
if (!rec) {
return false;
}
grid.store.remove(rec);
}

grid.store.load();

}

Ext.onReady(index());

Gant 04.08.2010 22:41

header:
Request URL:http://localhost:3000/admin/cars/11.json
Request Method:POST
Status Code:405 Method Not Allowed

x-yuri 05.08.2010 08:23

хм, я в общем-то не очень в теме, но зачем тут метод DELETE и где в коде указано, что нужно отправлять методом DELETE?

Gant 05.08.2010 13:05

а это RESTful, в котором есть PUT, DELETE, POST, GET.
т.е. extjs отправляет метод и json, метод определяет что нужно сделать с данными, а сами данные передаются в json :)
вот такой вот круговорот.

а в итоге, что делать? подскажите народ!

Gant 05.08.2010 13:15

или нужно делать обход через
Ext.Ajax.request({
headers : {
'X-HTTP-Method-Override' : 'DELETE'
},
method: 'POST',
url: '/admin/cars',
params: {
...
},
....

mycoding 05.08.2010 21:11

А зачем нужен DELETE?
Вообще запросы делятся на
REQUEST,POST,GET,DELETE и ещё какие то.
Зачем POST и GET понятно, а другие зачем?

Gant 05.08.2010 22:08

PUT (изменить), DELETE (удалить)

mycoding 05.08.2010 22:32

А почему нельзя просто посылать POST запрос?
"action=delete"

или
"action=update"

x-yuri 05.08.2010 23:33

сразу скажу, что пока что тут никто не отметился, кто имел дело с ExtJs... но можно поробовать разобраться. Повторю вопрос
Цитата:

Сообщение от x-yuri
и где в коде указано, что нужно отправлять методом DELETE?

кроме того, этот метод DELETE... это скажем так "сущность из ExtJs", а не из HTTP?

p.s. оформи код, плз, с отступами и с форматированием

Kolyaj 06.08.2010 08:44

Цитата:

Сообщение от mycoding
А почему нельзя просто посылать POST запрос?

Потому что это RESTful.

Цитата:

Сообщение от x-yuri
кроме того, этот метод DELETE... это скажем так "сущность из ExtJs", а не из HTTP?

Это как раз из HTTP.

http://www.sencha.com/deploy/dev/exa...l/restful.html
Посмотрите в firebug'е, какие запросы отправляются при редактировании и удалении.


Часовой пояс GMT +3, время: 08:25.