php - jquery post与$.ajax,如何避免多次发布?

标签 php jquery http-post

仍在寻找解决方案,但尚未找到,我有一个功能可以管理相同/不同页面上的不同表单

function formStantardAction(correctAnswer,addCustomData){
        addCustomData = (typeof addCustomData == "undefined")?'':addCustomData;
    correctAnswer = (typeof correctAnswer == "undefined")?'Saved.':correctAnswer;
    $('form.standard').submit(function(event){
        event.preventDefault();
        var modalWin = $(this).parent();
        var values = $('form.standard').serialize() + addCustomData;
        $.ajax({
        url: "inc/gateway.php",
        data: values,
        type: "POST",
        success: function(data){
            if (data == "OK"){
                $(modalWin).html(correctAnswer).delay(500).fadeOut(500);
                setTimeout(function() {
                    mw_close();
                }, 1000);
            }else{
                alert(data);
            }
        }
        });

    });
    }

加载页面和表单后,输入类型为“button”,名为“SEND”

$('form.standard [name="SEND"]').click(function(){
            var str = $('#sortableTo').serializelist();
        formStantardAction('New train inserted.',str);
            $('form.standard').submit();
        });

所有值通过 POST 到达 php 页面,该页面完成所有操作(验证、插入数据库、更新日志...),如果一切正常,则回答“确定”(因此模式窗口中的表单替换为自定义消息并淡出)或者...如果出现错误,php 会用一些文本进行回答,js 会弹出一个警报,使模态窗口与表单保持打开状态。

一切都好,但是,如果 php 回答错误,则第二次单击“发送”按钮时,帖子会发送两次。 如果我在第二次发送时再次出错,并再次单击发送按钮,则发布值将发送三次......依此类推。

我能做什么?我的错误在哪里?

谢谢。

最佳答案

尝试排除提交 block :

 function formStantardAction(correctAnswer,addCustomData){
        addCustomData = (typeof addCustomData == "undefined")?'':addCustomData;
    correctAnswer = (typeof correctAnswer == "undefined")?'Saved.':correctAnswer;
    //$('form.standard').submit(function(event){
     //   event.preventDefault();
//change 'this' to form.standard
        var modalWin = $('form.standard').parent();
        var values = $('form.standard').serialize() + addCustomData;
        $.ajax({
        url: "inc/gateway.php",
        data: values,
        type: "POST",
        success: function(data){
            if (data == "OK"){
                $(modalWin).html(correctAnswer).delay(500).fadeOut(500);
                setTimeout(function() {
                    mw_close();
                }, 1000);
            }else{
                alert(data);
            }
        }
        });

    });
   // }

加载页面后:

   $('form.standard [name="SEND"]').click(function(){
                var str = $('#sortableTo').serializelist();
            formStantardAction('New train inserted.',str);
//excluding submit event
               // $('form.standard').submit();
            });

因为类型为“Post”的 $.ajax {} 已经是一个提交过程,然后当脚本调用提交时它会重新提交。

希望这是正确的并有帮助

关于php - jquery post与$.ajax,如何避免多次发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11116908/

相关文章:

javascript - Angular.JS HTTP POST 数据未发送

javascript - 如何将 jquery unbind 设置为切换

jquery - 如何在jquery中查找元素及其名称

c++ - 使用cpp-httplib上传文件

django - Flutter 向 Django API 发送一个以文件为正文的 POST 请求

jquery - 是否可以直接从 application.js 渲染部分内容

php - 如何在准备好的语句中绑定(bind)嵌套查询的参数?

php - 无法将数组保存到 csv 文件

php:页面导航后 session 消失

php - SQL 选择作为 PHP 函数