我想添加一个监听器到一个窗体,以便当用户离开它时,ajax调用被做出,但似乎没有发生。在Firefox中没有看到任何错误,并且在我离开页面时没有任何控制台记录,这告诉我代码不正确。 jquery(和ajax)相当新颖,希望有人能告诉我我在这里做错了什么。jquery函数没有发射 - onunload
HTML:家用/文件夹/ index.php文件
<script>
var rowid = "<?php echo $_SESSION['rowid'] ?>";
var user = "<?php echo $_SESSION['user'] ?>";
</script>
...
<form id="update" method="post" action="index.php?update=1" autocomplete="off">
jQuery的:家庭/脚本/ main.js
var end_lock = 0;
$('#update').on('unload', function(){
end_lock = 1;
console.log('error');
});
window.onunload = callAjaxRecordLock;
function callAjaxRecordLock(){
if (end_lock === 1){
$.ajax({
url: 'home/includes/ajax.php',
type: 'POST',
data: {
method: 'ajax_record_lock',
rowid: rowid,
user: user,
endlock: 1
}
});
}
}
PHP:家用/包括/ ajax.php
<?php
if (isset($_POST['method'])) {
$_POST['method']();
}
function ajax_record_lock(){
$ajax_rowid = $_POST['rowid'];
$ajax_user = $_POST['user'];
$ajax_endlock = $_POST['endlock'];
if (isset($ajax_rowid) && isset($ajax_user) && isset($ajax_endlock)) {
sp_record_lock($ajax_rowid, $ajax_user, $ajax_endlock);
}
}
编辑: 找到此链接https://api.jquery.com/category/events/form-events/看来beforeunload不是表单元素的有效事件。是否有另一种方法来实现我所需要的?
控制台在服务器和jQuery的一些任意位置,看看它有什么问题。另外尝试向ajax添加回调函数,以查看结果是否回到客户端 – forJ
在$('#update')。on('unload',function()...中添加了一个控制台日志。 – wonderstruck80