【问题标题】:Perform AJAX request before continuing with default action [closed]在继续执行默认操作之前执行 AJAX 请求 [关闭]
【发布时间】:2013-02-22 22:05:48
【问题描述】:

我有一个基本的 AJAX 请求,如下所示:

    $.ajax({
        url: 'check_password.php',
        type: 'post',
        data: 'password='+password,
        dataType: 'json',
        success: function(json) {
            if (json['success']) {
               //Continue with default action
            }else{
                //Password is invalid, stop the script and return an error
                preventDefault();
                $(".error").show();
            }
        }

【问题讨论】:

  • 你的问题是......?
  • 我认为问题是“如何在提交表单之前从 AJAX 请求中获得响应”
  • 你不能不使用同步 ajax,这通常是个坏主意。
  • 对不起,我的问题不清楚,我很着急。如果 json['success'] 对象为 == false,我希望表单不提交。抱歉,伙计们缺乏信息:) @KevinB 回答会解决问题的:)

标签: javascript jquery ajax preventdefault


【解决方案1】:

我建议完全阻止默认设置,然后通过在表单节点上使用.submit() 提交表单(如果它是表单),从而绕过 jQuery 事件处理程序。

$("#myform").on("submit",function(event){
    event.preventDefault();
    var form = this;
    $.ajax({
        url: theurl,
        type: "POST",
        data: thedata
        dataType: "json"
    }).done(function(json){
        if (json.success) {
            form.submit();
        }
        else {
            $("#error").show();
        }
    });    
});

【讨论】:

  • 抱歉来晚了,但感谢您为我指明了正确的方向,也很抱歉写了这么糟糕的问题,我发帖时很着急!再次感谢!
  • @PeterStuart 没问题,很高兴你可以让它工作。
猜你喜欢
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 2018-02-28
相关资源
最近更新 更多