我有一个页面,用户将数据(通过ajax)发送到php页面,该页面将数据输入到数据库。但是,偶尔检查数据库时请求会出现故障。
基本上,用户在事件发生时输入事件并点击提交将其发送到数据库。有时,用户在发送之前会记录2个事件,在这种情况下,一次发送1个事件。这种情况是偶尔切换的。
以下是相关代码。
i = 0;
while (event[i]) {
var post_data = //post data for event[i]
$.ajax({
type: "POST",
url: "save_event.php",
data: post_data,
});
event.splice(0,1);
}
Event []是一个包含用户提交的事件的数组。每个事件都是具有各种属性的对象。通常,数组中只有一个对象,但有时候有2.我删除了我执行post_data的部分,因为它跨越了3行。
也许有一半时间有两个事件,它们在数据库中被颠倒了。有没有办法可以消除它?或者它完全取决于服务器处理的时间长度,有时它会在完成第一个处理之前完成第二个?
答案 0 :(得分:2)
由于AJAX请求是异步并行发送的,这完全取决于浏览器和服务器的处理时间。您可以添加async: false
选项,但这会在请求期间冻结浏览器,因为它们将不再是异步的。
我建议你在数据库中添加一个订单栏。
var post_data = { order: i, ... };
另一种选择是发送包含所有数据的单个AJAX请求。
答案 1 :(得分:1)
如果订单有问题,那么要么发送序列号并在服务器中找出它,要么同时发送所有事件。