Làm cách nào để gửi yêu cầu PUT / DELETE trong jQuery?


Câu trả lời:


924

Bạn có thể sử dụng phương pháp ajax :

$.ajax({
    url: '/script.cgi',
    type: 'DELETE',
    success: function(result) {
        // Do something with the result
    }
});

65
Xin lưu ý, nếu bạn đang sử dụng máy chủ web IIS và jquery PUThoặc DELETEyêu cầu đang trả về lỗi 404, bạn sẽ cần bật các động từ này trong IIS. Tôi đã tìm thấy đây là một tài nguyên tốt: geekswithbloss.net/michelotti/archive/2011/05/28/ Khăn
TimDog

22
ĐƯỢC TUYỆT VỜI"The type of request to make ("POST" or "GET"), default is "GET". Note: Other HTTP request methods, such as PUT and DELETE, can also be used here, but they are not supported by all browsers." : từ: api.jquery.com/jQuery.ajax/#options
andilabs

23
@andi Theo stackoverflow.com/questions/1757187/ trên bất kỳ trình duyệt nào từ IE6 đều hỗ trợ các phương thức http này. Trừ khi bạn đang phát triển cho một trình duyệt cổ , bạn có thể sử dụng các phương thức http một cách an toàn ngoài "NHẬN" và "BÀI".
Martin Carney


6
đối với các phiên bản sau 1.9, bạn có thể sử dụng methodhoặctype
các trang web

124

$.ajax sẽ làm việc.

$.ajax({
   url: 'script.php',
   type: 'PUT',
   success: function(response) {
     //...
   }
});

4
PUT là cần thiếtcontentType: "application/json"
KingRider

3
Có sự khác biệt nào giữa câu trả lời này và của Darin Dimitrov không? Tôi cho rằng cả hai đều được tạo ra cùng một lúc, và do đó không có bất kỳ đạo văn nào, nhưng tôi không thấy câu trả lời này thêm gì (ngoài 940 danh tiếng cho Jacob).
Andrew Grimm

72

Chúng tôi có thể mở rộng jQuery để tạo các phím tắt cho PUT và XÓA:

jQuery.each( [ "put", "delete" ], function( i, method ) {
  jQuery[ method ] = function( url, data, callback, type ) {
    if ( jQuery.isFunction( data ) ) {
      type = type || callback;
      callback = data;
      data = undefined;
    }

    return jQuery.ajax({
      url: url,
      type: method,
      dataType: type,
      data: data,
      success: callback
    });
  };
});

và bây giờ bạn có thể sử dụng:

$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
   console.log(result);
})

sao chép từ đây


Xóa không mong đợi dữ liệu trong khi đặt, không nói rằng $ .get và $ .post có thể có các chữ ký khác nhau trong khi ở đây bạn đang mã hóa dữ liệu thành một
Francisco Presencia

1
@FranciscoPresencia - 1. Xóa không mong đợi dữ liệu trong khi đặt ----> Dòng thứ ba xử lý tình huống này 2. $ .get và $ .post có thể có các chữ ký khác nhau ----> Đây chỉ là tạo các phương thức jquery bổ sung để xóa và đặt. nhận và đăng có phương pháp jquery riêng của họ.
Mahesh


10

Từ đây , bạn có thể làm điều này:

/* Extend jQuery with functions for PUT and DELETE requests. */

function _ajax_request(url, data, callback, type, method) {
    if (jQuery.isFunction(data)) {
        callback = data;
        data = {};
    }
    return jQuery.ajax({
        type: method,
        url: url,
        data: data,
        success: callback,
        dataType: type
        });
}

jQuery.extend({
    put: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'PUT');
    },
    delete_: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'DELETE');
    }
});

Về cơ bản, nó chỉ là một bản sao $.post()với tham số phương thức được điều chỉnh.


9

Đây là một cuộc gọi ajax được cập nhật khi bạn đang sử dụng JSON với jQuery> 1.9:

$.ajax({
    url: '/v1/object/3.json',
    method: 'DELETE',
    contentType: 'application/json',
    success: function(result) {
        // handle success
    },
    error: function(request,msg,error) {
        // handle failure
    }
});

5

Bạn sẽ có thể sử dụng jQuery.ajax:

Tải một trang từ xa bằng cách sử dụng yêu cầu HTTP.


Và bạn có thể chỉ định phương pháp nào sẽ được sử dụng, với typetùy chọn :

Loại yêu cầu thực hiện (" POST" hoặc " GET"), mặc định là " GET".
Lưu ý: Các phương thức yêu cầu HTTP khác, chẳng hạn như PUTDELETE, cũng có thể được sử dụng ở đây, nhưng chúng không được tất cả các trình duyệt hỗ trợ.


4
Bạn có biết trình duyệt nào không hỗ trợ PUThay DELETEkhông?
Lea Hayes

4
Những cái bị hỏng, nếu chúng không có khả năng HTTP: ^)
XtL

4

ajax ()

tìm loại param

Các phương thức yêu cầu HTTP khác, chẳng hạn như PUT và DELETE, cũng có thể được sử dụng ở đây, nhưng chúng không được tất cả các trình duyệt hỗ trợ.


3

Để cho ngắn gọn:

$.delete = function(url, data, callback, type){

  if ( $.isFunction(data) ){
    type = type || callback,
    callback = data,
    data = {}
  }

  return $.ajax({
    url: url,
    type: 'DELETE',
    success: callback,
    data: data,
    contentType: type
  });
}

Tôi đoán không có trường dữ liệu
Bob

1

Bạn có thể làm điều đó với AJAX!

Đối với PUTphương pháp:

$.ajax({
  url: 'path.php',
  type: 'PUT',
  success: function(data) {
    //play with data
  }
});

Đối với DELETEphương pháp:

$.ajax({
  url: 'path.php',
  type: 'DELETE',
  success: function(data) {
    //play with data
  }
});

7
Điều này đã được nói nhiều năm trước khi bạn đăng câu trả lời này. Đây chỉ là tiếng ồn, thêm hoàn toàn không có gì mới.
Shadow Wizard là Ear For You


0

Nếu bạn cần tạo một $.posttác phẩm cho một Laravel Route::deletehoặc Route::putchỉ cần thêm một đối số "_method"="delete"hoặc "_method"="put".

$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...

Phải làm việc cho các Khung khác

Lưu ý: Đã thử nghiệm với Laravel 5.6 và jQuery 3


-1

Bạn có thể đưa vào dữ liệu của mình băm một khóa có tên: _method với giá trị 'xóa'.

Ví dụ:

data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
  alert('Yupi Yei. Your product has been deleted')
});

Điều này cũng sẽ áp dụng cho


3
Đây chỉ là một bài viết.
ctrl-alt-delor

1
Điều này sẽ hoạt động với đường ray, _method được sử dụng để tạo đường hầm phương thức http qua POST (mặc dù bạn có thể chỉ nên sử dụng điều này với các biểu mẫu - họ chỉ có thể thực hiện get / post).
opsb

Điều này cũng sẽ hoạt động với Laravel nếu bạn đang thực hiện nó từ một biểu mẫu với phương thức POST.
John Shipp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.