【问题标题】:Call a delete url from routes using ajax?使用ajax从路由中调用删除url?
【发布时间】:2017-12-16 13:49:54
【问题描述】:

如何使用 ajax 从路由中调用 url?

路线:

Route::delete('dashboard/tags/destroy/{tag}', 'TagCon@destroy')->name('tagdestroy');

控制器:

public function destroy($id) {
        $tag = Tag::findOrFail($id);
        $tag->delete();

        return response()->json($tag);
    }

Ajax 代码:

$(document).on('click', '.delete-modal', function () {
        $('.modal-title').text('Delete');
        $('#id_delete').val($(this).data('id'));
        $('#title_delete').val($(this).data('title'));
        $('#deleteModal').modal('show');
        id = $('#id_delete').val();
    });
    $('.modal-footer').on('click', '.delete', function () {
        $.ajax({
            type: 'DELETE',
            url: 'dashboard/tags/destroy/' + id,
            data: {
                '_token': $('input[name=_token]').val(),
            },
            success: function (data) {
                toastr.success('Successfully deleted Post!', 'Success Alert', {timeOut: 5000});
                $('.item' + data['id']).remove();
                $('.col1').each(function (index) {
                    $(this).html(index + 1);
                });
            }
        });
    });

它什么也不做可能是因为它没有调用正确的路线?但是,如果我将这个url: 'dashboard/tags/destroy/' + id, 更改为这个url: '{{ URL::route('tagdestroy') }}' + id,,它将返回一个错误Missing required parameters for [Route: tagdestroy] [URI: dashboard/tags/destroy/{tag}]

代码的错误部分在哪里?谢谢

已解决

现在可以工作了,将 ajax 函数中的 url 调用更改为 url: 'tags/destroy/' + id, 而不是 url: 'dashboard/tags/destroy/' + id, 。我不知道它为什么会起作用,删除方法 url 仍然定义为Route::delete('dashboard/tags/destroy/{tag}', 'TagCon@destroy')->name('tagdestroy');,而不是Route::delete('tags/destroy/{tag}', 'TagCon@destroy')->name('tagdestroy');

【问题讨论】:

    标签: ajax laravel laravel-5


    【解决方案1】:

    你的uri中的标签是必要的吗?我过去常常在我的 ajax 调用中省略它,将它用作 POST 参数。 路线:

    Route::delete('dashboard/tags/destroy', 'TagCon@destroy')->name('tagdestroy');
    

    Ajax 调用:

    $(document).on('click', '.delete-modal', function () {
        $('.modal-title').text('Delete');
        $('#id_delete').val($(this).data('id'));
        $('#title_delete').val($(this).data('title'));
        $('#deleteModal').modal('show');
        id = $('#id_delete').val();
    });
    $('.modal-footer').on('click', '.delete', function () {
        $.ajax({
            type: 'DELETE',
            url: '{{route('tagdestroy')}}',
            data: {
                '_token': $('input[name=_token]').val(), 'id': id
            },
            success: function (data) {
                toastr.success('Successfully deleted Post!', 'Success Alert', {timeOut: 5000});
                $('.item' + data['id']).remove();
                $('.col1').each(function (index) {
                    $(this).html(index + 1);
                });
            }
        });
    });
    

    控制器:

    public function destroy() {
        $id = e(Input::get('id'));
        $tag = Tag::findOrFail($id);
        $tag->delete();
        return response()->json($tag);
    }
    

    【讨论】:

    • 是的,需要通过以id为参数来确定正在删除哪些数据。
    • 现在可以工作了,将 ajax 函数中的 url 调用更改为 url: 'tags/destroy/' + id, 而不是 url: 'dashboard/tags/destroy/' + id, 。我不知道它为什么会起作用,当在路由中,url 仍然定义为'url:'dashboard/tags/destroy/{tag}'。无论如何,非常感谢!
    【解决方案2】:

    我认为第一个网址效果很好。 你仔细检查id参数吗? 我在ajax函数中看到,你没有声明它。 你用不同的函数调用id

    【讨论】:

    • 我确实声明过id = $('#id_delete').val();
    • @SandraVioletta:你可以试试Route::post() 并在 ajax 中输入:“POST”`
    • 试过了还是什么都没做,没有错误只是没有删除数据
    • @SandraVioletta 打开 chrome 的 web 开发者?在标记网络中,当您单击删除时。你看见什么了? (见参数dashboard/tags/destroy/
    • 好吧,我收到了这个 http://mk1.dev/dashboard/dashboard/tags/destroy/18 错误 404 状态代码。
    【解决方案3】:
    '{{ URL::route('tagdestroy',[Your Params ]) }}
    

    您的命名路线中缺少参数。

    【讨论】:

    • 我确实包含了参数url: '{{ URL::route('tagdestroy') }}' + id,。 id 是参数。也许我以错误的方式包含参数?
    • 你可以让它成为可选的,然后你可以像你提到的那样传递它,但你需要通过这个更新你的路线dashboard/tags/destroy/{tag?}
    • 我确实按照您对dashboard/tags/destroy/{tag?} 所说的那样更改了路线,但它仍然没有任何作用。我被卡住了:(
    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2011-12-05
    • 2016-05-14
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多