GET
:$.get(..)
POST
:$.post()..
Et alors PUT/DELETE
?
GET
:$.get(..)
POST
:$.post()..
Et alors PUT/DELETE
?
Réponses:
Vous pouvez utiliser la méthode ajax :
$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
PUT
ou les DELETE
requêtes renvoient des erreurs 404, vous devrez activer ces verbes dans IIS. J'ai trouvé que c'était une bonne ressource: 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."
de: api.jquery.com/jQuery.ajax/#options
method
outype
$.ajax
marchera.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
contentType: "application/json"
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 d' ici
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?
À partir d' ici , vous pouvez le faire:
/* 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 simplement d'une copie du $.post()
paramètre de méthode adapté.
Vous devriez pouvoir utiliser jQuery.ajax
:
Chargez une page distante à l'aide d'une requête HTTP.
Et vous pouvez spécifier la méthode à utiliser, avec l' type
option :
Type de demande à effectuer ("
POST
" ou "GET
"), la valeur par défaut est "GET
".
Remarque: D'autres méthodes de requête HTTP, telles quePUT
etDELETE
, peuvent également être utilisées ici, mais elles ne sont pas prises en charge par tous les navigateurs.
PUT
ou DELETE
?
Par souci de concision:
$.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
});
}
Vous pouvez le faire avec AJAX!
Pour la PUT
méthode:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
Pour la DELETE
méthode:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
J'ai écrit un plugin jQuery qui incorpore les solutions discutées ici avec un support multi-navigateur:
https://github.com/adjohnson916/jquery-methodOverride
Vérifiez-le!
Si vous avez besoin de faire un $.post
travail sur un Laravel Route::delete
ou Route::put
simplement d'ajouter un argument "_method"="delete"
ou "_method"="put"
.
$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...
Doit fonctionner pour les autres Frameworks
Remarque: testé avec Laravel 5.6 et jQuery 3
Vous pouvez inclure dans votre hachage de données une clé appelée: _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
Voici une simple ligne que j'utilise pour mettre plus d'une variable:
$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});