从数据库中删除记录的Ajax脚本不工作。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从数据库中删除记录的Ajax脚本不工作。相关的知识,希望对你有一定的参考价值。

我写了一个脚本,应该删除一个特定的条目。问题是当你点击删除按钮时,记录并没有消失,你必须重新加载页面才能使其消失。而且只删除数据库中的第一条记录,比如我点击删除id=2的记录,那么id=1的记录就会被删除。我就不明白为什么会出现这种情况。

这是我的脚本

<script type="text/javascript">
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    $(document).ready(function () {
        $("body").on("click","#delete",function(e){
            e.preventDefault();

            var id = $(this).data('data-id');
            var token = $("meta[name='csrf-token']").attr("content");

            $.ajax({
                url: "{{route('deletePost',['id' => $post->id])}}",
                type: 'DELETE',
                data: {_token: token, id: id},
                success: function (response){
                    $("#deletePost").html(response.message);
                }
            });
            return false;
        });
    });
</script>

方法

public function delete($id) {
    $post = Profile::find($id);
    $post->delete();
    return response()->json([
        'message' => 'deleted...'
    ]);
}

航线

Route::delete('/id{id}/delete', 'ProfileController@delete')->name('deletePost');

和html

<form action="{{route('deletePost', ['id' => $post->id])}}" method="post" id="formDelete">
    @csrf @method('DELETE')
    <button type="submit" id="delete" class="btn btn-sm btn-outline-danger py-0 mt-4" data-id="{{ $post->id }}">Удалить</button>
</form>
答案

改变

var id = $(this).data('data-id');

var id = $(this).data('id')。

<script type="text/javascript">
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    $(document).ready(function () {
        $("body").on("click","#delete",function(e){
            e.preventDefault();

            var id = $(this).data('id');
            var token = $("meta[name='csrf-token']").attr("content");

            $.ajax({
                url: "delete/"+id,
                type: 'DELETE',
                data: {_token: token, id: id},
                success: function (response){
                    $("#deletePost").html(response.message);
             // call your data get function here for disappear record after delele

                }
            });
            return false;
        });
    });
</script>

把路径改成.net,就可以了。

Route::delete('delete/{id}', 'ProfileController@delete')->name('deletePost');

删除方法就好了,不需要表格中的删除按钮。

<button type="submit" id="delete" class="btn btn-sm btn-outline-danger py-0 mt-4" data-id="{{ $post->id }}">Удалить</button>
另一答案

您错误地访问了属性 data-id 应该是

var id = $(this).data('id');

var id = $(this).attr('data-id');

以上是关于从数据库中删除记录的Ajax脚本不工作。的主要内容,如果未能解决你的问题,请参考以下文章

执行AJAX返回HTML片段中的JavaScript脚本

在 Sencha Touch 1.1 中使用 AJAX 代理从商店中删除记录

AJAX相关JS代码片段和部分浏览器模型

使用jquery表中的复选框从数组中删除JavaScript对象

从 Internet Explorer 中的 AJAX 响应中删除 SCRIPT 标记

从 Access 数据库中删除不存在的记录