2010-02-15 2 views
8

В моем клиентском приложении — написан в javascript и jQuery — У меня есть функция, где я делаю запрос $ .ajax с методом DELETE на моем сервере.

Код что-то вроде этого:

this.delete_one = function(id){ 
    console.log(id); 
    $.ajax({ 
     url: sitesCtrl.url, 
     type: "delete", 
     dataType: 'json', 
     data: {"id": id}, 
     success: function(data){ 
      if (data.success){ 
       $("sitesList").remove("#" + id + "\""); 
      } 
      else{ 
       console.log(data.message); 
      } 
     }, 
     error: function(){ 
      console.log("internal error"); 
     } 
    }) 
}; 

Проблема заключается в том, что сервер получает запрос без параметров «ид»! Просто УДАЛИТЬ (согласно Firebug). с PUT, POST или GET он отлично работает.

+0

http://stackoverflow.com/questions/4018982/ajax- ignoring-data-param-for-delete-requests –

ответ

7

Интересно. Я не могу найти ничего в RFC, но, по-видимому, невозможно передать параметры с помощью методов DELETE - только в GET и POST, поэтому JQuery или браузер корректно отфильтровывают параметры. Это просто предположение, хотя, возможно, тот, кто наизусть знает это, может сделать более глубокое заявление.

В любом случае, если это так, как работает JQuery прямо сейчас, я думаю, что ваше обходное решение должно будет помещать ID в URL-адрес и mod_rewrite его.

Прежде чем сделать это, попробуйте ли вы не можете обмануть браузер при прохождении его через добавив параметр к URL: sitesCtrl.url+'?ID='+id

+0

Хорошая фраза, логические предположения, RFC, проголосовали. – karim79

+0

Pekka, thnx для ответа. Некоторое время назад я работал с проектом на Cherrypy + ExtJS, а запросы DELETE от ExtJS до CP выполнялись довольно быстро и без каких-либо дополнительных проблем :) –

+0

«* Я не могу найти что-либо в RFC [...] *": вы должны пропустить бит, который определяет ['Request-URI'] (http://tools.ietf.org/html/rfc2616#section-5.1.2). [URI включает все параметры, включая параметры запроса] (http://tools.ietf.org/html/rfc2616#section-3.2) (даже фрагменты являются частью URI, но они не должны отправляться в запросах). – Bruno

Смежные вопросы