GET
::$.get(..)
POST
::$.post()..
Was ist mit PUT/DELETE
?
GET
::$.get(..)
POST
::$.post()..
Was ist mit PUT/DELETE
?
Antworten:
Sie können die Ajax- Methode verwenden:
$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
PUT
oder DELETE
Anforderungen 404-Fehler zurückgeben, müssen Sie diese Verben in IIS aktivieren. Ich habe festgestellt, dass dies eine gute Ressource ist: 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."
method
odertype
$.ajax
wird funktionieren.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
contentType: "application/json"
Wir können jQuery erweitern, um Verknüpfungen für PUT und DELETE zu erstellen:
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
});
};
});
und jetzt können Sie verwenden:
$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
console.log(result);
})
Kopie von hier
Scheint mit der Ajax-Funktion von JQuery möglich zu sein von durch Angabe möglich zu sein
type: "put"
oder
type: "delete"
und wird nicht von allen Browsern unterstützt, aber von den meisten.
Weitere Informationen zur Kompatibilität finden Sie in dieser Frage:
Sind die Methoden PUT, DELETE, HEAD usw. in den meisten Webbrowsern verfügbar?
Von hier aus können Sie dies tun:
/* 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');
}
});
Es ist im Grunde nur eine Kopie von $.post()
mit dem angepassten Methodenparameter.
Sie sollten in der Lage sein jQuery.ajax
:
Laden Sie eine Remote-Seite mithilfe einer HTTP-Anforderung.
Mit der type
Option können Sie angeben, welche Methode verwendet werden soll :
Die Art der Anforderung ("
POST
" oder "GET
") ist standardmäßig "GET
".
Hinweis: Hier können auch andere HTTP-Anforderungsmethoden wiePUT
undDELETE
verwendet werden, die jedoch nicht von allen Browsern unterstützt werden.
PUT
oder DELETE
?
Look für param Typ
Hier können auch andere HTTP-Anforderungsmethoden wie PUT und DELETE verwendet werden, die jedoch nicht von allen Browsern unterstützt werden.
Sie können es mit AJAX tun!
Für PUT
Methode:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
Für DELETE
Methode:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
Ich habe ein jQuery-Plugin geschrieben, das die hier diskutierten Lösungen mit browserübergreifender Unterstützung enthält:
https://github.com/adjohnson916/jquery-methodOverride
Hör zu!
Wenn Sie eine $.post
Arbeit an einem Laravel machen Route::delete
oder Route::put
einfach ein Argument hinzufügen müssen "_method"="delete"
oder "_method"="put"
.
$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...
Muss für andere Frameworks funktionieren
Hinweis: Getestet mit Laravel 5.6 und jQuery 3
Sie können einen Schlüssel mit dem Namen _method mit dem Wert 'delete' in Ihren Daten-Hash aufnehmen.
Zum Beispiel:
data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
alert('Yupi Yei. Your product has been deleted')
});
Dies gilt auch für
Hier ist ein einfacher Einzeiler, mit dem ich mehr als eine Variable setze:
$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});