通过 AJAX 保存时重复数据插入

时间:2021-06-25 08:25:18

标签: javascript php jquery ajax codeigniter

我使用 PHP Codeigniter 4 构建了我的第一个应用程序,并于昨天将其部署到生产环境中,用户可以在其中保存他们所售商品的数据。它们通过 JQuery 使用 AJAX 保存,每次保存功能后,页面都会重新加载。这是我的前端代码:

    $('form[name="transfer_record"]').submit(function (event) {
        // This will prevent form being submitted.
        event.preventDefault();
        // Call your function

        var save_date = $("#date").val();
        var save_phone_number = $("#phone_number").val();
        ...
        var save_team_lead = $("#team_lead").val();
        var save_qa_comments = $("#qa_comments").val();

        $.ajax({
        url: "<?=  base_url(). "/save_transfer_record";?>",
        type: "POST",
        data: {
            save_date:save_date,
            save_phone_number:save_phone_number,
            ...
            save_team_lead:save_team_lead,
        },
        success: function (data) {
            alert('Transfer Data Saved Successfully');
            location.reload(0)
        },

        });
    });

这是我在 PHP 中的控制器代码:

public function save_transfer_record()
    {
        date_default_timezone_set('America/New_York');
        $usa_date = date("Y-m-d H:i:s");

        $TransfersIBModel = new TransfersIBModel();
        if(isset($_POST)){
                $saveTransferForm = [
                    'date' => $usa_date,
                    'phone_number' => $this->request->getPost('save_phone_number'),
                    ...
                    'team_lead' => $this->request->getPost('save_team_lead'),
                ];
                $TransfersIBModel->save($saveTransferForm);
            
        }
    }

我的问题是:昨天是生产的第一天,出现了三个重复条目。

enter image description here

其中一个,橙色的,有不同的时间戳,这可能让我认为用户输入了两次。但其余两个是同时进行的。那么,可能是什么问题,我该如何缓解它。

  1. 如果不使“电话号码”条目唯一,我如何确保没有重复?
  2. 如果我将“电话号码”设置为唯一,我该如何使其发挥作用?

请给我建议。我可以尝试禁用 Ajax 单击时的按钮,但我认为它不起作用,因为感觉我的 AJAX 请求以某种方式运行了两次,因为一旦单击,页面应该在第二个 AJAX 请求之前重新加载,不是吗。

最后,现在的最佳实践是什么,我应该从表中硬删除重复的条目还是不显示重复的值。

0 个答案:

没有答案
相关问题