GET
: $.get(..)
¿Cómo enviar una solicitud PUT/DELETE en jQuery?
POST
: $.post()..
¿Qué hay de PUT/DELETE
?
GET
: $.get(..)
¿Cómo enviar una solicitud PUT/DELETE en jQuery?
POST
: $.post()..
¿Qué hay de PUT/DELETE
?
se puede utilizar el método de ajax:
$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
$.ajax
va a funcionar.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
PUT es necesario 'contentType:" application/json "' – KingRider
¿Hay alguna diferencia entre esta respuesta y la de Darin Dimitrov? Supongo que ambos fueron creados al mismo tiempo, y por lo tanto no hubo plagio, pero no veo qué agrega esta respuesta (aparte de la reputación 940 de Jacob). –
parece ser posible con JQuery's ajax function especificando
type: "put"
o type: "delete"
y no no está soportado por todos los navegadores, pero la mayoría de ellos.
Salida esta pregunta para obtener más información sobre la compatibilidad:
Are the PUT, DELETE, HEAD, etc methods available in most web browsers?
mirada de parámetro tipo
Otros métodos de petición HTTP, como PUT y DELETE, puede también se pueden usar aquí, pero no son compatibles con todos los navegadores.
Usted debe ser capaz de utilizar jQuery.ajax
:
carga una página remota utilizando un HTTP petición.
y puede especificar el método a utilizar, con el type
option:
El tipo de petición que hacer ("
POST
"o "GET
"), por defecto es"GET
" .
Nota: Otros métodos de solicitud HTTP, comoPUT
yDELETE
, también se pueden usar aquí, pero no son compatibles con todos los navegadores .
¿sabes qué navegadores no son compatibles con 'PUT' o' DELETE'? –
Las rotas, si no son capaces de HTTP: ^) – XTL
Puede incluir en su hash de datos una clave llamada: _method con valor 'delete'.
Por ejemplo:
data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
alert('Yupi Yei. Your product has been deleted')
});
Esto también se aplicará para
Esto simplemente hace una publicación. –
Esto funcionará con rieles, el método _método se utiliza para tunelizar métodos http sobre POST (aunque probablemente solo deberías usar esto con formularios, solo pueden hacer get/post). – opsb
Esto también funcionará con Laravel si lo está haciendo desde un formulario con el método POST. –
De here, usted puede hacer esto:
/* 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 básicamente una copia del $.post()
con el parámetro del método adaptado .
Podemos extender jQuery para crear accesos directos para PUT y 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
});
};
});
y ahora que puede utilizar:
$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
console.log(result);
})
copia de here
¡Esto es asombroso! Muchas gracias. Probé todas las variaciones tradicionales $ .ajax y no estaba teniendo suerte. Funcionó como por arte de magia. Prestigio. – mindtonic
Eliminar no espera * data * while put, por no decir que $ .get y $ .post pueden tener firmas diferentes mientras que aquí está codificándolo a uno –
@FranciscoPresencia - 1. Eliminar no espera datos mientras put does ----> La tercera línea maneja este escenario 2. $ .get y $ .post pueden tener diferentes firmas ----> Esto solo está creando métodos jquery adicionales para eliminar y poner. get y post tienen sus propios métodos jquery. – Mahesh
He escrito un plugin de jQuery que incorpora las soluciones discutidas aquí con soporte de navegador cruzado:
https://github.com/adjohnson916/jquery-methodOverride
¡Échale un vistazo!
¡Lo puedes hacer con AJAX!
Para PUT
método:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
Para DELETE
método:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
Esto ya se dijo años antes de publicar esta respuesta. Esto es solo ruido, y no agrega nada nuevo. –
Por razones de brevedad:
$.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
});
}
PS: utilizar angular
Aquí hay una n informado ajax llamada para cuando se está utilizando JSON con 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
}
});
Sólo una nota, si está utilizando un servidor web IIS y el jQuery '' PUT' o solicitudes DELETE' están regresando 404 errores, necesitará habilitar estos verbos en IIS. He encontrado que este es un buen recurso: http://geekswithblogs.net/michelotti/archive/2011/05/28/resolve-404-in-iis-express-for-put-and-delete-verbs.aspx – TimDog
TENGA CUIDADO: '" El tipo de solicitud a realizar ("POST" o "GET"), el valor predeterminado es "GET" Nota: Otros métodos de solicitud HTTP, como PUT y DELETE, también se pueden usar aquí, pero son no soportado por todos los navegadores. "' de: http://api.jquery.com/jQuery.ajax/#options – andi
@andi Según http://stackoverflow.com/questions/1757187/which-browsers-dont-support -a-http-delete-with-jquery-ajax Cualquier navegador de IE6 en es compatible con estos métodos http. A menos que esté desarrollando un navegador * ancient *, puede usar métodos http de forma segura más allá de "GET" y "POST". –