CRUD - 如果页面没有刷新,添加和删除一个接一个地不起作用

Posted

技术标签:

【中文标题】CRUD - 如果页面没有刷新,添加和删除一个接一个地不起作用【英文标题】:CRUD - Add and Delete not working one after other if page is not refreshed 【发布时间】:2021-02-27 15:08:24 【问题描述】:

我有一个烦人的问题我无法解决。

我正在我的 Symfony 项目中生成 CRUD 操作。我为 Add 方法发出了 AJAX 请求,它应该可以正常工作。

之后我为 Delete 方法创建了 AJAX 请求。

当我添加我的新实体对象时,表格会在不刷新页面的情况下重新加载。

问题是,如果我在添加后单击删除,则会引发找不到 ID 的错误。

/**
 * @Route("/user/id", name="user_delete", options="expose"=true)
 */
public function delete($id)

    $em = $this->getDoctrine()->getManager();

    $$user = $em->getRepository(User::class)
        ->findOneby(['id' => $id]);

    if (!$user) 
        throw $this->createNotFoundException('No User found for id '.$id);
    

    $em->remove($user);
    $em->flush();

    return $this->json(["message" => "SUCCESS"]);

因此,例如,我添加了具有 ID = 2 的实体。 DIV 被重新加载。现在我点击删除 2 并显示:

未找到 ID 1

的用户

问题是它总是在页面刷新后填充我删除的最后一个 ID。

现在,如果我刷新页面然后尝试删除,它将捕获 ID = 2 并删除它。现在,我添加 ID = 3 而不刷新页面,它会抛出:

未找到 ID 2

的用户

我认为这可能与我的添加表单有关:

添加表格:

$('#form-submit').on('click', function (e) 
e.preventDefault();


    $.ajax(
        type: "POST",
        url: '/subscription/add',
        data: $('form#subscription-form').serialize(),
        processData: false,
        success: function () 
            $("#user-table").load(location.href + " #user-table");
            $('#addUser').modal('hide');
            displayNotif('success', 'check', 'User created successfully');
        ,
        error: function (xhr, status, error) 
            var ErrorMessage = JSON.parse(xhr.responseText);
            $('#general-error').html(ErrorMessage.message);
        
    );
);

有人可以帮忙吗?

$(document).ready(function () 

$('.user_delete').on('click', function () 
    let removeUrl = $(this).attr('data-remove-url');
    $('.remove-user').attr('data-remove-url', removeUrl);
);

$(".remove-user").click(function (e) 
    let removeUrl = $(this).attr('data-remove-url');
    e.preventDefault();
    $.ajax(
        url: removeUrl,
        type: 'DELETE',
        success: function()
        
            $("#user-table").load(location.href + " #user-table");
            $('#confirmDelete').modal('hide');
            displayNotif("danger", "warning", "User deleted successfully");
        
    );
);
);

我正在添加所有内容,以便您了解我在做什么:

<a href data-toggle="modal" data-target="#confirmDelete" data-remove-url=" path('user_delete', 'id':user.id) " class="btn user_delete">x</a>

【问题讨论】:

查看***.com/questions/34003738/… 对不起,对我的 coce 没有帮助。 @hous 【参考方案1】:

选项 1: 删除按钮的单击事件无法正常工作。

尝试替换

$(".remove-user").click

$(".remove-user").on(“click”

选项 2:

data-remove-url

此属性不会相应更新。检查您的 DOM 以进行验证

【讨论】:

以上是关于CRUD - 如果页面没有刷新,添加和删除一个接一个地不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在刷新页面时没有显示来自 apollo 服务器的数据?

如何指定要刷新的页面

Web App 可在不刷新页面的情况下最好地添加、删除和编辑行

vue实现不刷新整个页面刷新数据

简谈a标签与添加点击事件

DataTables 在 CRUD 操作上刷新 Django Ajax 数据