【问题标题】:Laravel 5 Ajax Delete not workingLaravel 5 Ajax删除不起作用
【发布时间】:2015-06-03 22:12:07
【问题描述】:

我遇到了一个奇怪的问题。我似乎无法通过 ajax 提交删除记录。我没有看到任何错误,因为这以前在 Laravel 4 上有效。我需要向该方法提供 CSRF 令牌吗?如果我将路线更改为任何而不是发布或删除并直接点击它,它将按预期删除。

 {!! HTML::link(url(), 'Delete', array('class' => 'btn btn-delete', 'data-name' => $tile->tile_name, 'id' => $tile->id)) !!}

阿贾克斯

 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();        

}

【问题讨论】:

  • 你的路由监听了 DELETE 但你发送了一个 POST 请求
  • 嗨!我什至将列表更改为 POST 请求的路由,它仍然不会删除记录。
  • 您的浏览器控制台是否出现任何错误?

标签: ajax laravel laravel-5


【解决方案1】:

我需要向方法提供 CSRF 令牌吗?

是的,你知道。 Laravel 默认的 CSRF 保护适用于 AJAX POST/PUT/DELETE/等。请求就像他们对非 AJAX 的请求一样。

【讨论】:

  • 我认为有关如何更改或为 ajax 实现 CSRF 的说明(甚至只是一个链接)将有助于 OP 并改进此答案...
【解决方案2】:

不用担心。谢谢@ceejayoz!我能够弄清楚,这对于没有在 ajax 请求的标头中设置的 csrf 令牌几乎是有作用的。以下资源对那些感兴趣的人有帮助。

http://laravel.com/docs/master/routing

http://words.weareloring.com/development/laravel/laravel-4-csrf-tokens-when-using-jquerys-ajax/

【讨论】:

    猜你喜欢
    • 2016-12-26
    • 2016-12-02
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    相关资源
    最近更新 更多