【问题标题】:Delete multiple records in laravellaravel 中删除多条记录
【发布时间】:2016-06-10 00:40:13
【问题描述】:

只删除一条记录我意识到这个 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");
                }
            });
          }

通过 $get 发送我删除文件并运行此路由的记录的 id:

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

最终到达驱动程序并执行删除功能

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

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

【问题讨论】:

    标签: php ajax laravel get routes


    【解决方案1】:

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


    使用您当前的方法,发送 X-CSRF-TOKEN 标头不会做任何事情,因为 Laravel 不会检查读取请求的 CSRF 令牌(GETHEAD)。相反,您应该使用 DELETE 请求将要删除的所有 ID 作为参数传递,如下所示:

    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 数组。

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 2016-08-10
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      相关资源
      最近更新 更多