GET
: $.get(..)
Come inviare una richiesta PUT/DELETE in jQuery?
POST
: $.post()..
Che dire PUT/DELETE
?
GET
: $.get(..)
Come inviare una richiesta PUT/DELETE in jQuery?
POST
: $.post()..
Che dire PUT/DELETE
?
è possibile utilizzare il metodo ajax:
$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
$.ajax
funzionerà.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
PUT è necessario 'contentType:" application/json "' – KingRider
C'è qualche differenza tra questa risposta e quella di Darin Dimitrov? Presumo che siano stati entrambi creati allo stesso tempo, e quindi non c'era nessun plagio, ma non vedo cosa aggiunge questa risposta (a parte la reputazione 940 di Jacob). –
sembra essere possibile con JQuery's ajax function specificando
type: "put"
o type: "delete"
e non non è supportato da tutti i browser, ma la maggior parte di essi.
Partenza a questa domanda per ulteriori informazioni sulla compatibilità:
Are the PUT, DELETE, HEAD, etc methods available in most web browsers?
look per param tipo
Altri metodi di richiesta HTTP, ad esempio PUT e DELETE, possono anche essere usato qui, ma non sono supportati da tutti i browser.
Si dovrebbe essere in grado di utilizzare jQuery.ajax
:
caricare una pagina remota utilizzando una richiesta HTTP.
Ed è possibile specificare il metodo da utilizzare, con il type
option:
Il tipo di richiesta da fare ("
POST
"o "GET
"), di default è"GET
" .
Nota: Altri metodi di richiesta HTTP , comePUT
eDELETE
, possono essere utilizzati anche qui, ma non sono supportati da tutti i browser .
sai quali browser non supportano 'PUT' o' DELETE'? –
Rotti, se non sono in grado di HTTP: ^) – XTL
È possibile includere nell'hash dei dati una chiave denominata: _method con valore 'delete'.
Ad esempio:
data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
alert('Yupi Yei. Your product has been deleted')
});
Questo vale anche per
Questo fa solo un post. –
Funzionerà con i binari, il metodo _method viene usato per eseguire il tunneling dei metodi http su POST (anche se probabilmente dovresti usarlo solo con i moduli - sono solo in grado di ottenere/pubblicare). – opsb
Funzionerà anche con Laravel se lo stai facendo da un modulo con il metodo POST. –
Da here, si può fare questo:
/* 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');
}
});
è fondamentalmente solo una copia di $.post()
con il parametro del metodo adattato .
Possiamo estendere jQuery per fare collegamenti per 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 ora è possibile utilizzare:
$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
console.log(result);
})
copia da here
Questo è fantastico! Grazie mille. Ho provato tutte le tradizionali varianti $ .ajax e non ho avuto fortuna. Questo ha funzionato come un fascino. Complimenti. – mindtonic
Delete non si aspetta * data * mentre put fa, per non dire che $ .get e $ .post possono avere firme diverse mentre qui lo stai codificando su uno –
@FranciscoPresencia - 1. L'eliminazione non prevede dati mentre put fa ----> La terza linea gestisce questo scenario 2. $ .get e $ .post possono avere diverse firme ----> Questo sta solo creando metodi jquery aggiuntivi per delete e put. ottenere e pubblicare i propri metodi jquery. – Mahesh
Ho scritto un plugin per jQuery che incorpora le soluzioni discusse qui con supporto cross-browser:
https://github.com/adjohnson916/jquery-methodOverride
Check it out!
Puoi farlo con AJAX!
Per PUT
metodo:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
Per DELETE
metodo:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
Questo è stato già detto anni prima che tu abbia postato questa risposta. Questo è solo rumore, aggiungendo totalmente nulla di nuovo. –
Per brevità:
$.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: utilizzare angolare
Ecco un n aggiornati ajax chiamata per quando si utilizza 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
}
});
Solo una nota, se si sta utilizzando un server web IIS e il jquery 'PUT' o' richieste DELETE' stanno tornando errori 404, è sarà necessario abilitare questi verbi in IIS. Ho trovato che questa è una buona risorsa: http://geekswithblogs.net/michelotti/archive/2011/05/28/resolve-404-in-iis-express-for-put-and-delete-verbs.aspx – TimDog
ESSERE CONSAPEVOLE: '" Il tipo di richiesta da effettuare ("POST" o "GET"), l'impostazione predefinita è "GET". Nota: Altri metodi di richiesta HTTP, come PUT e DELETE, possono essere utilizzati anche qui, ma sono non supportato da tutti i browser. "' da: http://api.jquery.com/jQuery.ajax/#options – andi
@andi Come per http://stackoverflow.com/questions/1757187/which-browsers-dont-support -a-http-delete-with-jquery-ajax qualsiasi browser da IE6 su supporta questi metodi http. A meno che tu non stia sviluppando per un * browser * antico, puoi tranquillamente usare i metodi http oltre a "GET" e "POST". –