我有一个奇怪的问题。我似乎无法通过ajax提交删除记录。我之前在Laravel 4上工作时没有看到任何错误。我是否需要为方法提供CSRF令牌?如果我将路线更改为任何而不是发布或删除并直接点击它将按预期删除。
{!! HTML::link(url(), 'Delete', array('class' => 'btn btn-delete', 'data-name' => $tile->tile_name, 'id' => $tile->id)) !!}
的Ajax
var id = $this.attr('id');
// Submit delete request to route with id
$.post('edit/delete/' + id);
// Redirect to gallery
window.location.href = 'http://ims-tiles.dev/';
路线
$router->post('edit/delete/{id}', [
'as' => 'tile.destroy',
'uses' => 'TileController@destroy'
]);
销毁方法
public function destroy($id) {
$tile = Tile::find($id);
$tags = explode(' ', $tile->getTags());
$tagIds = [];
foreach($tags as $tag){
array_push($tagIds, $tile->getTagId($tag));
}
$tile->tags()->detach($tagIds);
$tile->delete();
}
答案 0 :(得分:1)
我是否需要为方法提供CSRF令牌?
是的,你这样做。 Laravel的默认CSRF保护适用于AJAX POST / PUT / DELETE /等。请求就像他们做非AJAX那样。
答案 1 :(得分:0)
不用担心。谢谢@ceejayoz!我能够弄明白,并且几乎没有在ajax请求的头文件中设置csrf令牌。以下资源帮助了我感兴趣的人。
http://laravel.com/docs/master/routing
http://words.weareloring.com/development/laravel/laravel-4-csrf-tokens-when-using-jquerys-ajax/