我使用 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);
}
}
我的问题是:昨天是生产的第一天,出现了三个重复条目。
其中一个,橙色的,有不同的时间戳,这可能让我认为用户输入了两次。但其余两个是同时进行的。那么,可能是什么问题,我该如何缓解它。
请给我建议。我可以尝试禁用 Ajax 单击时的按钮,但我认为它不起作用,因为感觉我的 AJAX 请求以某种方式运行了两次,因为一旦单击,页面应该在第二个 AJAX 请求之前重新加载,不是吗。
最后,现在的最佳实践是什么,我应该从表中硬删除重复的条目还是不显示重复的值。