要删除一条记录我才意识到这个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)并不一样。有什么想法吗?
答案 0 :(得分:1)
您不应使用GET
动词发送删除请求。相反,你应该使用语义正确的DELETE
动词。
使用您当前的方法,发送X-CSRF-TOKEN
标题并不会做任何事情,因为Laravel没有检查CSRF令牌的读取请求(GET
和HEAD
)。相反,您应该将所有要删除的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的数组。