在某些条件下的某个页面上,我需要在页面卸载时在 SQL 中运行更新语句。它需要在用户到达下一页之前完成。我正在使用 JQuery 1.8.3。这是我开始的地方:
$(window).unload(function() {
$.ajax({
type: "POST",
cache: false,
url: "myScript.php",
data: ({ /* my data */ }),
success: function(result) { /* do nothing */ },
error: function(data) { location.reload(); }
});
});
使用此方法更新语句没有运行。通过阅读它,我尝试了“async:false”,这似乎并没有解决我的问题,直到我检查了我的表并看到值正在更新(仅在添加“async:false”之后)。根据进一步阅读,“async: false”在 JQuery 1.8 中已被弃用,但仍在努力执行更新语句。问题是更新语句在下一页的选择语句已经完成之前不会完成执行,因此除非用户刷新页面,否则数据已经过时。这是由于在 1.8 中对“async: false”的部分支持、写入 db 的执行速度较慢与从 db 读取的快速执行、其他一些延迟问题,或者 ???即使卸载事件使用户保持在页面上,下一个 HTTP 请求是否可能通过?