GET
:$.get(..)
POST
:$.post()..
Co PUT/DELETE
?
GET
:$.get(..)
POST
:$.post()..
Co PUT/DELETE
?
Odpowiedzi:
Możesz użyć metody ajax :
$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
PUT
lub DELETE
żądania zwracają błędy 404, musisz włączyć te czasowniki w IIS. Uważam, że jest to dobry zasób: geekswithblogs.net/michelotti/archive/2011/05/28/…
"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."
from: api.jquery.com/jQuery.ajax/#options
method
lubtype
$.ajax
będzie działać.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
contentType: "application/json"
Możemy rozszerzyć jQuery, aby tworzyć skróty dla PUT i DELETE:
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
});
};
});
a teraz możesz użyć:
$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
console.log(result);
})
skopiuj stąd
Podaje się, że jest to możliwe dzięki funkcji ajax JQuery'ego
type: "put"
lub
type: "delete"
i nie jest obsługiwany przez wszystkie przeglądarki, ale większość z nich.
Sprawdź to pytanie, aby uzyskać więcej informacji na temat zgodności:
Czy metody PUT, DELETE, HEAD itp. Są dostępne w większości przeglądarek internetowych?
Z tutaj , można to zrobić:
/* 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');
}
});
Jest to w zasadzie tylko kopia $.post()
z dostosowanym parametrem metody.
Powinieneś być w stanie użyć jQuery.ajax
:
Załaduj zdalną stronę za pomocą żądania HTTP.
I możesz określić, którą metodę należy zastosować, z type
opcją :
Typem żądania („
POST
” lub „GET
”), domyślnym jest „GET
”.
Uwaga: Można tu również użyć innych metod żądania HTTP, takich jakPUT
iDELETE
, ale nie są one obsługiwane przez wszystkie przeglądarki.
PUT
lub DELETE
?
Możesz to zrobić za pomocą AJAX!
Dla PUT
metody:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
Dla DELETE
metody:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
Napisałem wtyczkę jQuery, która zawiera omówione tutaj rozwiązania z obsługą różnych przeglądarek:
https://github.com/adjohnson916/jquery-methodOverride
Sprawdź to!
Jeśli musisz wykonać $.post
pracę dla Laravela Route::delete
lub Route::put
po prostu dodać argument "_method"="delete"
lub "_method"="put"
.
$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...
Musi działać dla innych frameworków
Uwaga: Testowane z Laravel 5.6 i jQuery 3
Do skrótu danych możesz dołączyć klucz o nazwie: _method z wartością „delete”.
Na przykład:
data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
alert('Yupi Yei. Your product has been deleted')
});
Dotyczy to również
Oto prosty jednoliniowy, którego używam do umieszczenia więcej niż jednej zmiennej:
$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});