【问题标题】:Ajax form submitting twice with Yii 2使用 Yii 2 提交两次 Ajax 表单
【发布时间】:2015-01-26 09:26:19
【问题描述】:

我环顾四周,没有其他类似的帖子对我有帮助。我在Yii 2jQuery 中构建了一个基于AJAx 的表单,它似乎提交了两次表单。

我的表格:

$form = ActiveForm::begin([
    'id' => 'company_form',
    'ajaxDataType' => 'json',
    'ajaxParam' => 'ajax',
    'enableClientValidation' => false
]);

我的 JS 代码:

$(document).ready(function() {

    /* Processes the company signup request */

    $('#company_form').submit(function() {
        signup('company');
        return false;
    }); 

})

function signup(type) {

    var url;

    // Set file to get results from..

    switch (type) {
        case 'company':
            url = '/site/company-signup';
            break;
        case 'client':
            url = '/site/client-signup';
            break;
    }

    // Set parameters
    var dataObject = $('#company_form').serialize();

    // Run request  

    getAjaxData(url, dataObject, 'POST', 'json')

        .done(function(response) {

            //.........

        })

        .fail(function() {
            //.....
        });

    // End

}

不应该通过我将return: false; 放入javascript 代码来停止标准提交吗?

为什么要提交两次?

更多信息: 然而奇怪的是,这似乎只是第一次发生;如果我再次点击提交,它只会提交一次;但如果我重新加载页面并点击提交,它会再次执行两次。

【问题讨论】:

  • 在 firebug 中是否发送了两次 ajax 请求?
  • @AliMasudianPour 是的,当我观看控制台时,请求被发送了两次。然而奇怪的是,这似乎只是第一次发生;如果我再次点击提交,它只会提交一次;但如果我重新加载页面并点击提交,它会再次执行两次。

标签: javascript php ajax yii yii2


【解决方案1】:

您可能需要如下更改您的代码:

$('#company_form').submit(function(e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    signup('company');
    return false;
}); 

http://api.jquery.com/event.stoppropagation/

http://api.jquery.com/event.stopimmediatepropagation/

【讨论】:

  • 做到了! :) 非常感谢!
  • 我也有同样的问题。该表单具有'enableAjaxValidation' => true, 'validateOnSubmit' => true,但即使使用您提供的代码,该表单仍会提交两次。只有在没有错误的情况下才提交两次。
【解决方案2】:

解决方案常见

Next JS 将适用于'enableClientValidation' 的任何状态:

$('#company_form').on('beforeSubmit', function (e) {
    signup('company');
    return false;
}); 

https://yii2-cookbook.readthedocs.io/forms-activeform-js/#using-events

【讨论】:

    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 2011-06-17
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多