GET
:$.get(..)
POST
:$.post()..
Que tal PUT/DELETE
?
GET
:$.get(..)
POST
:$.post()..
Que tal PUT/DELETE
?
Respostas:
Você pode usar o método ajax :
$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
PUT
ou os DELETE
pedidos estiverem retornando erros 404, será necessário habilitar esses verbos no IIS. Descobri que este é um bom recurso: 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."
a partir de: api.jquery.com/jQuery.ajax/#options
method
outype
$.ajax
vai funcionar.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
contentType: "application/json"
Podemos estender o jQuery para criar atalhos para PUT e 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
});
};
});
e agora você pode usar:
$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
console.log(result);
})
copiar daqui
Parece ser possível com a função ajax do JQuery especificando
type: "put"
ou
type: "delete"
e não é suportado por todos os navegadores, mas pela maioria deles.
Confira esta pergunta para obter mais informações sobre compatibilidade:
Os métodos PUT, DELETE, HEAD, etc estão disponíveis na maioria dos navegadores da web?
A partir daqui , você pode fazer isso:
/* 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');
}
});
É basicamente apenas uma cópia do $.post()
parâmetro de método adaptado.
Aqui está uma chamada ajax atualizada para quando você estiver usando JSON com 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
}
});
Você deve ser capaz de usar jQuery.ajax
:
Carregue uma página remota usando uma solicitação HTTP.
E você pode especificar qual método deve ser usado, com a type
opção :
O tipo de solicitação a ser feita ("
POST
" ou "GET
"), o padrão é "GET
".
Nota: Outros métodos de solicitação HTTP, comoPUT
eDELETE
, também podem ser usados aqui, mas eles não são suportados por todos os navegadores.
PUT
ou DELETE
?
Por uma questão de brevidade:
$.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
});
}
Você pode fazer isso com o AJAX!
Para o PUT
método:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
Para o DELETE
método:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
Eu escrevi um plugin jQuery que incorpora as soluções discutidas aqui com suporte para vários navegadores:
https://github.com/adjohnson916/jquery-methodOverride
Confira!
Se você precisar fazer um $.post
trabalho em um Laravel Route::delete
ou Route::put
apenas adicionar um argumento "_method"="delete"
ou "_method"="put"
.
$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...
Deve funcionar para outros frameworks
Nota: Testado com o Laravel 5.6 e jQuery 3
Você pode incluir no seu hash de dados uma chave chamada: _method com o valor 'delete'.
Por exemplo:
data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
alert('Yupi Yei. Your product has been deleted')
});
Isso também se aplica a
Aqui está uma linha simples que eu uso para colocar mais de uma variável:
$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});