【问题标题】:jQuery Ajax post submitting multiple times overjQuery Ajax 发布多次提交
【发布时间】:2013-11-27 22:41:25
【问题描述】:

我只是不明白为什么此表单会发送同一电子邮件的多个副本(从 1 到 8 个副本)。我已经尽力解决问题,但我无法解决。

我正在使用 jQuery Validation Engine 来验证表单,如果验证正确,我使用 jquery.post() 来提交表单。

为了安全起见,我已经包含了我的所有代码。但是这里有些东西可能无关紧要,比如当消息发送成功时我在 iframe 中加载的 ppcconversion 脚本。

请看下面的代码:

$(".consult-form form .submit").click(function(){
    $(".consult-form form").validationEngine('attach', {
        promptPosition : "topLeft",
        onValidationComplete: function(contactForm, status){
            if(status==true){
                $(".consult-form form .submit").clone().insertAfter($(this)).attr("disabled","true");
                $(".consult-form form .submit").hide();
                _gaq.push(['_trackPageview', '/web-contact']); // Google Page Tracker
                $.post('/path/to/process.php', $(".consult-form form").serialize(), function(data) {
                    // Add Thank You Message
                    $('.thank-you-message').html(data);
                    // Create IFRAME to page with Adwords Tracking Script
                    function ppcconversion() {
                        var iframe = document.createElement('iframe');
                        iframe.style.width = '0px';
                        iframe.style.height = '0px';
                        document.body.appendChild(iframe);
                        iframe.src = 'http://www.fullurlto.com/conversion-script.php';
                    };
                    ppcconversion();
                });
                return false; // I attempted to add this line to prevent it from submitting multiple times. It didn't work.
                $(".consult-form form").hide();
            }
        }
    });
});

如果您需要任何其他详细信息以了解更多信息,请告诉我,我会提供。

谢谢!

【问题讨论】:

    标签: jquery ajax forms validation post


    【解决方案1】:

    现在,您每次点击 .submit 时都会添加一个新的验证处理程序

    而是在 ready 处理程序中添加一次验证

    $(function() {
        $(".consult-form form").validationEngine('attach', {
            //...
        }
    });
    

    【讨论】:

    • 这是有道理的。我理解您的建议,但我不确定如何相应地编辑我的代码。对不起,我不是太有经验。您能否在答案中提供更详细的示例?
    • $(function() {替换$(".consult-form form .submit").click(function(){
    • 哦哈哈,好简单。我已经更新了我的代码。我认为这可能是问题所在,但经过一些测试后,我会将其作为正确答案。谢谢!
    【解决方案2】:

    jQuery 验证引擎通常在表单提交时触发,因此无需绑定提交按钮点击事件。

    只需将验证结尾附加到表单并正常提交即可。应该不错(未测试)

    【讨论】:

    • 酷。我做了安德烈亚斯建议的改变(和你提到的一样)。希望这能解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多