CRUD - 如果页面未刷新,添加和删除将无法一个接一个地工作

CRUD - Add and Delete not working one after other if page is not refreshed

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

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

之后我创建了 AJAX 删除方法请求。

当我添加新的实体对象时,table 会在没有刷新页面的情况下重新加载。

问题是,如果我在添加后单击删除,它会抛出找不到 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,它说:

No user found for id 1

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

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

No user found for 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>

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

尝试替换

$(".remove-user").click

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

选项 2:

data-remove-url

此属性未相应更新。检查您的 DOM 以验证