删除laravel中的多个记录

时间:2016-02-26 17:14:27

标签: php ajax laravel get routes

要删除一条记录我才意识到这个ajax

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");
                }
            });
          }

发送$ $获取我删除文件的记录的id并运行此路由:

Route::get('eliminarRadicado/delete/{id}', 'RadicadoController@destroy');

最终进入驱动程序并执行删除功能

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

删除我发送的多个记录(id)并不一样。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您不应使用GET动词发送删除请求。相反,你应该使用语义正确的DELETE动词。

使用您当前的方法,发送X-CSRF-TOKEN标题并不会做任何事情,因为Laravel没有检查CSRF令牌的读取请求(GETHEAD )。相反,您应该将所有要删除的ID作为参数传递给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', 'RadicadoController@destroy');

在您的destroy控制器方法中,使用通过请求收到的ID数组:

use Illuminate\Http\Request;

...

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

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

现在,您可以使用相同的请求传递要删除的一个或多个ID的数组。