【问题标题】:Yii2 - beforeSubmit ajax return valueYii2 - beforeSubmit ajax 返回值
【发布时间】:2023-03-15 20:08:01
【问题描述】:

我在 beforeSubmit() 函数中进行 AJAX 调用,如下:

$('#register-form').on('beforeSubmit', function(event) {
    $.ajax({
        url: url,
        success: function(response) {
            return response.status; // boolean
        }
    });
});

我想要 AJAX 成功函数的结果(truefalse)来确定beforeSubmit() 函数的返回值。

我意识到你不能在 ajax 成功的情况下返回,我也知道一个潜在的解决方案是在我的 AJAX 调用中设置async: false,但是我知道不推荐这样做,所以我更愿意尝试不同的解决方案。

我已尝试实现这些帖子中详述的“回调”功能:

ajax return true/false - I have implemented a callback

jQuery: Return data after ajax call success

但我似乎仍然无法让它工作。

【问题讨论】:

  • 按照上面给出的帖子到目前为止你做了什么?你决定说它不起作用会发生什么?
  • 如果您认为可以继续提交表单或基于返回 ajax response.status 停止提交表单,它不会起作用,您必须手动提交表单

标签: jquery ajax yii yii2


【解决方案1】:

我已经解决了这个问题:

$('#register-form').on('beforeSubmit', function(event) {
    var form = $(this);

    if (!form.hasClass('complete')) {
        $.ajax({
            url: url,
            success: function(response) {
                if (response.status == true) {
                    form.addClass('complete').submit();
                }
            }
        });

        return false;
    }
});

所以beforeSubmit() 函数只有在表单没有“完整”类时才返回 false。如果是,它将继续进行默认表单提交。

【讨论】:

  • beforeSubmit() 是 Yii2 ActiveForm.js 函数,不是 jQuery。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多