我试图将侦听器添加到窗体,以便当用户离开它时,会进行ajax调用,但似乎没有任何反应。 当我离开页面告诉我代码不正确时,在firefox中看不到任何错误,也没有任何控制台记录在控制台中。 jQuery(和ajax)的新手,希望有人可以告诉我我在做什么错。

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:home / includes / 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对于表单元素而言不是有效事件。 有没有其他方法可以满足我的需求?

#1楼 票数:2

您需要使AJAX调用同步。 如果它是异步的,它将永远不会执行,因为网站会卸载。 使用同步请求,您可以锁定浏览器直到完成:

async: false

但是,我认为这不是一件好事。 不要搞乱默认的客户端行为,这是糟糕的用户体验。

  ask by wonderstruck80 translate from so

未解决问题?本站智能推荐:

3回复

jQuery load()使Jquery函数触发多次

这是我的代码。 它加载页面内容而不刷新。 问题是当我单击由jQuery和ajax处理的按钮时,它会在加载页面时触发多次。 例如,如果加载了2页,jQuery将触发两次 如果我加载了4页,则jQuery将加载4次。 该脚本触发的次数与我通过load()函数加载页面的次
3回复

jQuery,Ajax无法触发正确的php函数

嗨,我有一个小型项目,其中有2个标签,即“新闻”和“编辑新闻”。 当您打开页面时,“新闻”选项卡将默认显示一些新闻。 当用户切换到“编辑新闻”选项卡时,他可以从选择框中选择是否要获取最近4周或6周的新闻。 然后单击“选择”和“提交”按钮,他可以再次使用已编辑的新闻切换到“新闻”选项卡。到目
2回复

用jQuery触发div的onmouseover时的未定义函数

我收到未定义的函数错误。 我已经在onmouseover上定义了此函数,但是它不起作用。 我的代码是 的HTML 脚本 请建议
3回复

jQuery单击无触发

我正在使用一个while循环来创建一个表,并且试图将存储在名为$i的php变量中的唯一值传递给jquery ajax调用,但是我得到的所有返回值都是'undefined' 。 html表的一部分(整个表都包装在一个名为audit_content的div audit_content ,这不是
1回复

jQuery和Ajax调用被多次触发

嗨,我正在给我的php端进行ajax调用,以在数据库中添加或编辑。 根据完成的内容,我返回三个选项。 用firebug调试后,我看到在每次使用add / edit / delete提交后,对php端的调用不止一次(每次两次),我做了很多阅读,尝试解除绑定和绑定,这仅允许事件处理程序执行一次,
4回复

jQuery:按钮单击多次触发

在我的网站上,我有多个按钮,并且每个按钮通过ajax从同一文件两次加载到网站上。 虽然我的问题是,如果同一按钮被加载两次,则此事件将触发两次。 如果只加载一个按钮,则效果很好。 我的代码: 的index.php Buttons.php firstButtonC
4回复

我可以从php函数触发javascript函数吗?

我通过这样的js ajax函数获取html数据 据我所做的HTML是由PHP函数生成的。 现在是否可以在生成的html数据中触发foo()函数,或者可以发送可以触发该函数的数据。 谢谢
2回复

jQuery点击事件不会触发[重复]

这个问题已经在这里有了答案: Click事件不适用于动态生成的元素[重复] 20个答案 我正在做一个项目,我使用ajax将内容加载到页面中。 我的jQuery函数是: 内容加载完全成功,但是当我单击<a id='edit' href='#'>