web-dev-qa-db-fra.com

Comment envoyer une demande PUT/DELETE dans jQuery?

GET: $.get(..)

POST: $.post()..

Qu'en est-il de PUT/DELETE?

506
user198729

Vous pouvez utiliser la méthode ajax :

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

$.ajax fonctionnera.

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

Nous pouvons étendre jQuery pour créer des raccourcis pour PUT et 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
    });
  };
});

et maintenant vous pouvez utiliser:

$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
   console.log(result);
})

copier de ici

70
Stepan Suvorov

Semble être possible avec / La fonction ajax de JQuery en spécifiant 

type: "put" ou type: "delete" 

et n'est pas pris en charge par tous les navigateurs, mais la plupart d'entre eux. 

Consultez cette question pour plus d'informations sur la compatibilité:

Les méthodes PUT, DELETE, HEAD, etc. sont-elles disponibles dans la plupart des navigateurs Web?

29
Pekka 웃

De ici , vous pouvez faire ceci:

/* 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');
    }
});

Il s’agit essentiellement d’une copie de $.post() avec le paramètre de méthode adapté.

9
user2503775

Voici un appel ajax mis à jour pour utiliser JSON avec 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
    }
});
7
moodboom

Vous devriez pouvoir utiliser jQuery.ajax :

Chargez une page distante à l'aide d'un HTTP demande.


Et vous pouvez spécifier quelle méthode doit être utilisée, avec l’option type :

Le type de demande à effectuer ("POST" ou "GET"), par défaut, "GET". 
Note: Autre Méthodes de requête HTTP, telles que PUT et DELETE, peut également être utilisé ici, mais ils ne sont pas supportés par tous les navigateurs.

5
Pascal MARTIN

ajax ()

cherche param type

D'autres méthodes de requête HTTP, telles que PUT et DELETE, peuvent également être utilisées ici, mais elles ne sont pas prises en charge par tous les navigateurs.

4
antpaw

Pour être bref:

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

Vous pouvez le faire avec AJAX!

Pour la méthode PUT

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

Pour la méthode DELETE

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

J'ai écrit un plugin jQuery qui intègre les solutions discutées ici avec une prise en charge multi-navigateurs:

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

Vérifiez-le!

1
AndersDJohnson

Vous pouvez inclure dans vos données un hash appelé _method avec la valeur 'delete'.

Par exemple:

data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
  alert('Yupi Yei. Your product has been deleted')
});

Cela s'appliquera également pour 

1
mumoc

Si vous devez faire fonctionner un $.post avec un Laravel Route::delete ou Route::put, ajoutez simplement un argument "_method"="delete" ou "_method"="put".

$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...

Doit fonctionner pour d'autres

Remarque: testé avec Laravel 5.6 et jQuery 3

0
Marcos Regis

Voici une simple ligne que j'utilise pour mettre plus d'une variable:

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

1) GET: - Utilisé lorsque le client demande une ressource sur le serveur Web.

2) HEAD: - Utilisé lorsque le client demande des informations sur une ressource mais ne demande pas la ressource elle-même.

3) POST: - Utilisé lorsque le client envoie des informations ou des données au serveur - par exemple, pour remplir un formulaire en ligne (c.-à-d. Envoie une grande quantité de données complexes au Web Server).

4) PUT: - Utilisé lorsque le client envoie un document de remplacement ou télécharge un nouveau document sur le serveur Web sous l'URL de la demande.

5) DELETE: - Utilisé lorsque le client tente de supprimer un document du serveur Web, identifié par l'URL de la demande.

6) TRACE: - Utilisé lorsque le client demande aux serveurs mandataires disponibles ou intermédiaires de modifier la demande pour s’annoncer eux-mêmes.

7) OPTIONS: - Utilisé lorsque le client souhaite déterminer d'autres méthodes disponibles pour récupérer ou traiter un document sur le serveur Web.

8) CONNECT: - Utilisé lorsque le client souhaite établir une connexion transparente avec un hôte distant, généralement pour faciliter la communication cryptée SSL (HTTPS) via un proxy HTTP.

0
harshit gupta