GET
:$.get(..)
POST
:$.post()..
Thế còn PUT/DELETE
?
GET
:$.get(..)
POST
:$.post()..
Thế còn PUT/DELETE
?
Câu trả lời:
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
}
});
PUT
hoặc DELETE
yê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
"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
method
hoặctype
$.ajax
sẽ làm việc.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
contentType: "application/json"
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
Có vẻ khả thi với hàm ajax của JQuery bằng cách chỉ định
type: "put"
hoặc là
type: "delete"
và không được hỗ trợ bởi tất cả các trình duyệt, nhưng hầu hết trong số chúng.
Kiểm tra câu hỏi này để biết thêm về khả năng tương thích:
Các phương thức PUT, DELETE, HEAD, vv có sẵn trong hầu hết các trình duyệt web không?
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.
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 type
tù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ư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ợ.
PUT
hay DELETE
không?
Để 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
});
}
Bạn có thể làm điều đó với AJAX!
Đối với PUT
phương pháp:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
Đối với DELETE
phương pháp:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
Tôi đã viết một plugin jQuery kết hợp các giải pháp được thảo luận ở đây với sự hỗ trợ của nhiều trình duyệt:
https://github.com/adjohnson916/jquery-methodOverride
Kiểm tra nó ra!
Nếu bạn cần tạo một $.post
tác phẩm cho một Laravel Route::delete
hoặc Route::put
chỉ 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
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
Đây là một lớp lót đơn giản tôi sử dụng để đặt nhiều hơn một biến:
$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});