Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用yii2提交两次Ajax表单_Javascript_Php_Ajax_Yii_Yii2 - Fatal编程技术网

Javascript 使用yii2提交两次Ajax表单

Javascript 使用yii2提交两次Ajax表单,javascript,php,ajax,yii,yii2,Javascript,Php,Ajax,Yii,Yii2,我环顾四周,其他类似的帖子都没有帮到我。我在yii2和jQuery中构建了一个基于AJAx的表单,它似乎提交了两次表单 我的表格: $form = ActiveForm::begin([ 'id' => 'company_form', 'ajaxDataType' => 'json', 'ajaxParam' => 'ajax', 'enableClientValidation' => false ]); 我的JS代码: $(docume

我环顾四周,其他类似的帖子都没有帮到我。我在
yii2
jQuery
中构建了一个基于
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

}
标准提交不应该被我输入
返回:false而停止吗

为什么要提交两次


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

您可能需要更改代码,如下所示:

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

常见解决方案 下一个JS将与
'enableClientValidation'
的任何状态一起工作:

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

它在firebug中是否发送了两次ajax请求?@AliMasudianPour是的,当我观看控制台时,请求会发送两次。然而奇怪的是,这似乎只是第一次发生;如果我再次点击提交,它只提交一次;但是如果我重新加载页面并点击submit,它将再次执行两次。成功了!:)谢谢!我也有同样的问题。表单具有
'enableAjaxValidation'=>true,'validateOnSubmit'=>true
,但即使使用您提供的代码,表单仍会提交两次。只有在没有错误时才提交两次。