Wie sende ich eine PUT / DELETE-Anfrage in jQuery?


Antworten:


924

Sie können die Ajax- Methode verwenden:

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

65
Nur ein Hinweis: Wenn Sie einen IIS-Webserver verwenden und die Abfrage PUToder DELETEAnforderungen 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/…
TimDog

22
Seien Sie sich"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."
bewusst

23
@andi Gemäß stackoverflow.com/questions/1757187/… unterstützt jeder Browser ab IE6 diese http-Methoden. Sofern Sie nicht für einen alten Browser entwickeln, können Sie http-Methoden sicher über "GET" und "POST" hinaus verwenden.
Martin Carney

1
Auch können Sie nicht in Formulardaten übergeben . Es muss die URI durchlaufen.
Xavier

6
Für Versionen nach 1.9 können Sie methododertype
Websites

124

$.ajax wird funktionieren.

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

4
PUT ist nötigcontentType: "application/json"
KingRider

3
Gibt es einen Unterschied zwischen dieser Antwort und der von Darin Dimitrov? Ich gehe davon aus, dass beide zur gleichen Zeit geschaffen wurden, und daher gab es kein Plagiat, aber ich sehe nicht, was diese Antwort hinzufügt (abgesehen von 940 Ruf für Jacob).
Andrew Grimm

72

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


Löschen erwartet keine Daten, während Put es tut, um nicht zu sagen, dass $ .get und $ .post unterschiedliche Signaturen haben können, während Sie sie hier fest auf eine codieren
Francisco Presencia

1
@FranciscoPresencia - 1. Löschen erwartet keine Daten, während Put es tut ----> Die dritte Zeile behandelt dieses Szenario 2. $ .get und $ .post können unterschiedliche Signaturen haben ----> Hiermit werden nur zusätzliche Abfragemethoden erstellt zum löschen und setzen. get und post haben ihre eigenen jquery-Methoden.
Mahesh


10

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.


9

Hier ist ein aktualisierter Ajax- Aufruf für die Verwendung von JSON mit 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

Sie sollten in der Lage sein jQuery.ajax:

Laden Sie eine Remote-Seite mithilfe einer HTTP-Anforderung.


Mit der typeOption 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 wie PUTund DELETEverwendet werden, die jedoch nicht von allen Browsern unterstützt werden.


4
Wissen Sie, welche Browser nicht unterstützen PUToder DELETE?
Lea Hayes

4
Defekte, wenn sie nicht HTTP-fähig sind: ^)
XTL

4

ajax ()

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.


3

Der Kürze halber:

$.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
  });
}

Kein Datenfeld, denke ich
Bob

1

Sie können es mit AJAX tun!

Für PUTMethode:

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

Für DELETEMethode:

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

7
Dies wurde bereits Jahre vor der Veröffentlichung dieser Antwort gesagt. Dies ist nur Lärm und fügt nichts Neues hinzu.
Schatten-Assistent ist Ohr für Sie


0

Wenn Sie eine $.postArbeit an einem Laravel machen Route::deleteoder Route::puteinfach 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


-1

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


3
Dies macht nur einen Beitrag.
Strg-Alt-Delor

1
Dies funktioniert mit Rails. Die _method wird verwendet, um http-Methoden über POST zu tunneln (obwohl Sie dies wahrscheinlich nur mit Formularen verwenden sollten - sie können nur get / post ausführen).
opsb

Dies funktioniert auch mit Laravel, wenn Sie es über ein Formular mit der POST-Methode ausführen.
John Shipp

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.