javascript - 如何使用 javascript 和 ajax 检查表单是否已提交以避免多次发送同一表单

标签 javascript php jquery ajax

表单是 javascript 或 jquery 中非常有趣的元素(在本例中)。

这是我的问题:

JS:

const themeFolder = object_name.templateUrl;
const urlAjax = themeFolder + '/FormHandler.php';
const form = $('#contact-form');
const outputmessage = $('.output-message');

form.submit(function(e) {
    e.preventDefault();
    $.ajax({
        type: 'post',
        url: urlAjax,
        method: form.attr('method'),
        data: form.serialize() + '&submit=true',
        success: function (result) {
            console.log(result);
            outputmessage.append('<p>A message was sent successfully!</p>');
        }
    });
});

PHP:

if ($ok == true && isset($_POST['submit']) && empty( $honeypot )) {
    $json_tidy = json_encode($_POST);
    echo $json_tidy;
} else {
    echo 'something wrong';
}

现在,我没有得到的是,我可以使用相同的值多次发送相同的表单,但我没有找到仅发送一次表单并在完成后立即禁用该表单的解决方案.

可能是我想太多了,但是例如,json_tidy 会发布这个结果:

{"fname":"ma","lname":"ma","email":"ciao@ma.com","message":"ciao","honeypot":"","submit":"true"}</body>

这对我来说没有多大意义。

另外,在这种情况下,我正在努力寻找一个值来识别我将发送表单的次数的计数器。

我可以在 form.submit(function(e) {} 之后和 javascript 的 and 处使用 return true 和 false,但它只会避免我的 js 脚本运行并触发 php 脚本,这以我的形式:

<form id="contact-form" name="contact-form" action="{{ theme.link }}/FormHandler.php" method="POST">

我想知道过去是否有人遇到过同样的问题

最佳答案

bool 变量怎么样?

    // outer scope
    let hasSubmitted = false;
    //...
    form.submit(function(e) {
    if(hasSubmitted)return;
    hasSubmitted = true;
    //...

或者:

const submitButton = $("#submit-button")

form.submit(function(e) {
    submitButton.disabled = true;

关于javascript - 如何使用 javascript 和 ajax 检查表单是否已提交以避免多次发送同一表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59584081/

相关文章:

php - 如何将 PHP 和 Tomcat 7.0 集成在一起

php - 大型数据库的 Code igniter mysql 备份失败——除了 mysqldump 之外还有其他选择吗?

php - 使用 tcpdf 生成 pdf 下载

javascript - 使用 AJAX 更新我的列状态

javascript - 更改:before and :after pseudo-elements?的样式

javascript - 禁用 Twitter Bootstrap 按钮(链接)

javascript - 具有无限滚动功能的自定义 Tumblr 照片集

javascript - Electron 。如何用新的浏览器窗口覆盖停靠面板?

javascript - 如何通过DivId获取Div的文本

javascript - 连接两个页面内的数据