2010-02-15 35 views
8

Trong ứng dụng khách của tôi — được viết bằng javascript và jQuery — Tôi có một hàm mà tôi đang thực hiện yêu cầu $ .ajax bằng phương thức DELETE tới máy chủ của tôi.

Mã này là một cái gì đó như thế này:

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

Vấn đề là máy chủ được yêu cầu không có tham số "id"! Chỉ cần một DELETE đơn giản (theo firebug). với PUT, POST hoặc GET nó hoạt động tốt.

+0

http://stackoverflow.com/questions/4018982/ajax- bỏ qua-dữ liệu-param-cho-xóa-yêu cầu –

Trả lời

7

Thú vị. Tôi không thể tìm thấy bất cứ điều gì trong các RFC nhưng nó là lý do mà không có cách nào để vượt qua các tham số bằng cách sử dụng các phương pháp DELETE - chỉ trong GET và POST, do đó, hoặc JQuery hoặc trình duyệt chính xác lọc ra các tham số. Đây chỉ là một đoán, mặc dù, có lẽ ai đó biết điều này bằng trái tim có thể làm cho một tuyên bố sâu sắc hơn.

Dù sao, nếu đây là cách JQuery hoạt động ngay bây giờ, tôi nghĩ rằng cách giải quyết của bạn sẽ phải đặt ID vào URL và mod_rewrite nó ra.

Trước khi bạn làm điều đó, hãy thử cho dù bạn không thể đánh lừa trình duyệt trong đi qua nó thông qua bằng cách thêm tham số đến URL: sitesCtrl.url+'?ID='+id

+0

Phrasing tốt đẹp, giả định hợp lý, RFC, bỏ phiếu lên. – karim79

+0

Pekka, thnx để trả lời. Một thời gian trước, tôi đã làm việc với dự án trên cherrypy + ExtJS, và DELETE yêu cầu từ ExtJS đến CP chạy khá nhanh và không có bất kỳ vấn đề nào khác :) –

+0

"* Tôi không thể tìm thấy bất kỳ thứ gì trong RFC [...] *": bạn phải bỏ lỡ bit định nghĩa ['Request-URI'] (http://tools.ietf.org/html/rfc2616#section-5.1.2). [URI bao gồm tất cả mọi thứ bao gồm các tham số truy vấn] (http://tools.ietf.org/html/rfc2616#section-3.2) (ngay cả các mảnh là một phần của URI, nhưng chúng không được gửi trong các yêu cầu). – Bruno

Các vấn đề liên quan