2010-02-15 5 views
8

내 클라이언트의 응용 프로그램에서 —은 javascript와 jQuery로 작성되었습니다 — 저는 DELETE 메소드로 $ server.jax 요청을 내 서버에 보내고 있습니다.

코드는 다음과 같은 것입니다 :

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"); 
     } 
    }) 
}; 

문제는 서버가 어떤 매개 변수 "ID"와 요청을 얻을 수 있다는 것입니다! 그냥 간단한 삭제 (firebug에 따름). PUT, POST 또는 GET으로 잘 작동합니다.

+0

http://stackoverflow.com/questions/4018982/ajax- 무시 데이터 요청 매개 변수 삭제하기 –

답변

7

흥미 롭습니다. RFC에서 아무것도 찾을 수 없지만 GET 및 POST에서만 DELETE 메서드를 사용하여 매개 변수를 전달할 수있는 방법이 없다는 것을 알기 때문에 JQuery 또는 브라우저가 매개 변수를 올바르게 필터링합니다. 이것은 단지 추측이지만, 아마도이 내용을 아는 사람이 더 깊은 진술을 할 수 있습니다.

어쨌든 이것이 JQuery의 작동 방식이라면 해결 방법은 ID를 URL에 넣고 mod_rewrite해야합니다.

당신이 그렇게하기 전에 URL에 매개 변수 를 추가하여 통과에 브라우저를 속일 수 있는지보십시오 : sitesCtrl.url+'?ID='+id

+0

논리적 가정, RFC, 투표했습니다. – karim79

+0

Pekka, 대답은 thnx입니다. 몇 시간 전, 나는 cherrypy + ExtJS에 대한 프로젝트와 함께 일했고 CP에 ExtJS로부터의 DELETE 요청은 어떤 추가 문제없이 아주 빠르며 달렸습니다 :) –

+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