2015-07-25 10 views
6

ho questa risorsa in routes.php:Metodo non consentita quando PUT utilizzato nel corso AJAX per la risorsa laravel

Route::resource('items', 'ItemsController', ['before' => 'admin_access']); 

Prova di raggiungere [email protected] metodo attraverso l'AJAX ma è calciando fuori un errore di 405 Method not allowed:

var $inputs = $('input', row); 

var id = $(row).find('.edit').data('id'); 

var data = $inputs.serializeJSON(); 

data['_token'] = $('input[name=_token]').val(); 
data['_method'] = 'PUT'; 

console.debug(data); 

$.ajax({ 
    url: 'items/' + id, 
    method: 'PUT', 
    dataType: 'json', 
    data: data, 
    complete: function (data) { 
     if (data.success) { 
      itemsTable.ajax.reload(); 
     } 
    } 
}); 

Entrambe le variabili id e data contengono le informazioni corrette.

Questo funziona correttamente quando si esegue l'invio di un modulo standard con PUT come metodo (utilizzando il metodo di apertura anahkiasen/Former).

Cosa mi manca qui?

+0

A giudicare dal messaggio di errore (che sembra provenire dal server) e dal poco che ho letto su Laravel, questo sembra essere il caso dell'URL di richiesta PUT e il gestore di route non è allineato e quindi Laravel non trova un gestore per quella combinazione e quindi restituisce 405. – jfriend00

risposta

10

La maggior parte dei browser non è in grado di inviare metodi PUT e sono limitati solo a GET e POST.

Provare a cambiare il metodo su POST, ma lasciare l'elemento nell'array data allo scopo di falsificare il metodo di richiesta.

+0

Ugghh, ho completamente dimenticato questa limitazione. Era così. Grazie! – eComEvo

+0

O almeno così pensavo. Quando ho cambiato il metodo ': 'PUT'' al metodo':' POST'' ha funzionato, ma non si aspettava la risposta JSON, quindi ho aggiunto 'contentType: 'application/json'' e ora sono tornato a l'errore 405. Qualche idea? – eComEvo

+0

Risolto questo problema aggiungendo ''? _method = PUT'' alla fine del valore' url'. Non è stato rilevato da Laravel dopo aver modificato 'contentType' in json. – eComEvo

Problemi correlati