wake-up-neo.com

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

GET: $.get(..)

POST: $.post()..

Was ist mit PUT/DELETE?

517
user198729

Sie können die Methode ajax verwenden:

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

$.ajax wird funktionieren.

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

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

70
Stepan Suvorov

Scheint mit JQuery's ajax-Funktion durch Angabe möglich zu sein 

type: "put" oder type: "delete" 

und wird nicht von allen Browsern unterstützt, aber die meisten von ihnen. 

Weitere Informationen zur Kompatibilität finden Sie in dieser Frage:

Sind die Methoden PUT, DELETE, HEAD usw. in den meisten Webbrowsern verfügbar?

29
Pekka 웃

Von hier kannst du folgendes machen:

/* 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 angepasstem Methodenparameter.

9
user2503775

Hier ist ein aktualisierter Aufruf von ajax , wenn Sie JSON mit jQuery> 1.9 verwenden:

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

Sie sollten jQuery.ajax verwenden können:

Laden Sie eine Remote-Seite mit einem HTTP anfordern.


Sie können mit der Option type angeben, welche Methode verwendet werden soll.

Die Art der Anforderung ("POST" oder "GET") ist standardmäßig "GET". 
Hinweis: Andere HTTP-Anforderungsmethoden wie PUT und DELETE, kann auch hier verwendet werden, aber Sie werden nicht von allen unterstützt Browser.

5
Pascal MARTIN

ajax ()

suche nach param type

Andere HTTP-Anforderungsmethoden wie PUT und DELETE können hier ebenfalls verwendet werden, werden jedoch nicht von allen Browsern unterstützt.

4
antpaw

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
  });
}
2
Paul Wand

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
  }
});
2
Xanarus

Ich habe ein jQuery-Plugin geschrieben, das die hier beschriebenen Lösungen mit Browserübergreifender Unterstützung enthält:

https://github.com/adjohnson916/jquery-methodOverride

Hör zu!

1
AndersDJohnson

Sie könnten in Ihren Datenhash einen Schlüssel mit dem Namen _method mit dem Wert 'delete' einfügen.

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 

1
mumoc

Wenn Sie einen $.post-Vorgang für einen Laravel Route::delete oder Route::put ausführen müssen, fügen Sie einfach ein Argument "_method"="delete" oder "_method"="put" hinzu.

$.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

0
Marcos Regis

Hier ist ein einfacher Einzeiler, den ich für mehr als eine Variable verwenden kann:

$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});
0
David White

1) GET: - Wird verwendet, wenn der Client eine Ressource auf dem Webserver anfordert.

2) HEAD: - Wird verwendet, wenn der Client Informationen zu einer Ressource anfordert, die Ressource selbst jedoch nicht.

3) POST: - Wird verwendet, wenn der Client Informationen oder Daten an den Server sendet, z. B. indem er ein Online-Formular ausfüllt (d. H. Eine große Menge komplexer Daten an den Webserver sendet).

4) PUT: - Wird verwendet, wenn der Client unter der Anforderungs-URL ein Ersatzdokument sendet oder ein neues Dokument auf den Webserver hochlädt.

5) LÖSCHEN: - Wird verwendet, wenn der Client versucht, ein durch die Anforderungs-URL gekennzeichnetes Dokument vom Webserver zu löschen.

6) TRACE: - Wird verwendet, wenn der Client die verfügbaren Proxys oder Zwischenserver auffordert, die Anforderung zu ändern, um sich selbst anzumelden.

7) OPTIONEN: - Wird verwendet, wenn der Client andere verfügbare Methoden zum Abrufen oder Verarbeiten eines Dokuments auf dem Webserver ermitteln möchte.

8) CONNECT: - Wird verwendet, wenn der Client eine transparente Verbindung zu einem Remote-Host herstellen möchte, um normalerweise die SSL-verschlüsselte Kommunikation (HTTPS) über einen HTTP-Proxy zu ermöglichen.

0
harshit gupta