2010-01-28 20 views

risposta

757

è possibile utilizzare il metodo ajax:

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

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

+19

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

+17

@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". –

105

$.ajax funzionerà.

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

PUT è necessario 'contentType:" application/json "' – KingRider

+1

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). –

4

ajax()

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.

5

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 , come PUT e DELETE, possono essere utilizzati anche qui, ma non sono supportati da tutti i browser .

+4

sai quali browser non supportano 'PUT' o' DELETE'? –

+3

Rotti, se non sono in grado di HTTP: ^) – XTL

0

È 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

+1

Questo fa solo un post. –

+0

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

+0

Funzionerà anche con Laravel se lo stai facendo da un modulo con il metodo POST. –

9

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 .

61

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

+0

Questo è fantastico! Grazie mille. Ho provato tutte le tradizionali varianti $ .ajax e non ho avuto fortuna. Questo ha funzionato come un fascino. Complimenti. – mindtonic

+0

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 –

+0

@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

2

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 
    } 
}); 
+1

Questo è stato già detto anni prima che tu abbia postato questa risposta. Questo è solo rumore, aggiungendo totalmente nulla di nuovo. –

2

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

4

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 
    } 
}); 
Problemi correlati