2016-02-26 5 views
1

Чтобы удалить только одну запись, я понимаю, что это AJAXУдаление нескольких записей в Laravel

var borrar = confirm("¿Realmente desea eliminarlo?"); 
      if (borrar) 
      { 
      var token = document.getElementById('token').value; 
      $.ajax({ 
       headers: {'X-CSRF-TOKEN': token}, 
       dataType: "json", 
       data: {radicado: radicado}, 
       url: ip+'/eliminarRadicado/delete/'+radicado, 
       type: 'get', 
       beforeSend: function(){ 
        }, 
       success: function(respuesta){ 
        alert(respuesta); 
       }, 
       error: function(xhr,err){ 
        alert("Error"); 
       } 
      }); 
      } 

, который посылает на $ получить идентификатор записи, что я удалить файл и запустить этот маршрут:

Route::get('eliminarRadicado/delete/{id}', '[email protected]troy'); 

, который в конечном счете, идет к водителю и выполняет функцию удаления

public function destroy($id) 
{ 
    \App\Radicado::destroy($id); 
    return response()->json(['Documento eliminado']); 
} 

Что не нравится удаление более одной записи (id) я отправляю. Есть идеи ?

ответ

1

Не следует отправлять запросы на удаление с использованием глагола GET. Вместо этого вы должны использовать глагол DELETE, который семантически корректен.


С текущего подхода, посылая заголовок X-CSRF-TOKEN ничего не делать, так как Laravel не проверяет маркер CSRF для запросов на чтение (GET и HEAD). Вместо этого вы должны пройти все идентификаторы, которые вы хотите исключить, так как параметры с DELETE запросом следующим образом:

var ids = [1, 10, 17]; // Use your own logic to set the array of the IDs here 

$.ajax({ 
    headers : {'X-CSRF-TOKEN': token }, 
    dataType: "json", 
    data : { ids: ids },     // Pass IDs array 
    url  : ip + '/eliminarRadicado/delete', 
    type : 'delete',      // Send a delete request 

    beforeSend: function() { 
    }, 

    success: function (respuesta) { 
     alert(respuesta); 
    }, 

    error: function (xhr, err) { 
     alert("Error"); 
    } 
}); 

Затем изменить свое определение маршрута к этому:

Route::delete('eliminarRadicado/delete', '[email protected]'); 

И в вашем метод destroy контроллера использовать массив идентификаторов, полученных по запросу:

use Illuminate\Http\Request; 

... 

public function destroy(Request $request) 
{ 
    \App\Radicado::destroy($request->input('ids')); 

    return response()->json(['Documento eliminado']); 
} 

Теперь вы можете передать массив из одного или нескольких идентификаторов, которые будут удалены, используя тот же запрос.

Смежные вопросы