首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >成功触发器的jQuery ajax问题

成功触发器的jQuery ajax问题
EN

Stack Overflow用户
提问于 2011-04-05 23:35:24
回答 3查看 874关注 0票数 0

我知道我的问题在哪里,我就是想不出解决办法。

我有一个向导,基本上是一个5页的形式。在每个页面上,我做各种验证,如果验证匹配,则隐藏“页面”,并显示下一个页面。

代码语言:javascript
运行
复制
$('#wizard-2 .continue').click(function() {
  // Validation Here
  $('#wizard-2').hide();
  $('#wizard-3').show();
});

我的问题是其中一个验证函数需要一个ajax调用。

代码语言:javascript
运行
复制
$.ajax({
  // Misc stuff
  success : function (bool) {
    if (bool == 0) {
      // Show Error
      return false;
    }
  }
});

我需要做的是,脚本等待ajax调用完成,如果成功函数返回false,则需要停止脚本。

如果我使用的是一个真实的表单,我会将表单提交放在成功函数中,并防止在ajax之后直接执行默认操作。显然,这在这里是行不通的,因为在向导的最后一页完成之前,不应该提交表单。

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2011-04-05 23:37:36

您可以尝试在.ajax调用中设置async: false,以防止调用异步发生。当然,这会减慢页面的速度,但也是一种选择。

另一种选择是将执行ajax调用的验证之后的内容放入成功调用的函数中。由于不知道它是什么,我不能勾勒出确切的选项,但可以肯定的是

代码语言:javascript
运行
复制
$('#wizard-2').hide();
$('#wizard-3').show();

会是其中的一部分。

票数 1
EN

Stack Overflow用户

发布于 2011-04-05 23:39:39

我会尝试这样做:

1)定义一个函数来执行验证,该函数也需要回调函数类型的参数。

2)在click事件中,使用成功事件应该执行的函数调用验证函数。

类似于:

代码语言:javascript
运行
复制
$('#wizard-2 .continue').click(function () {
    // Validation Here   
    processWizard(function(){
        $('#wizard-2').hide();
        $('#wizard-3').show();
    });

});

function processWizard(callback){
    $.ajax({   
        // Misc stuff   
        success : function (bool) {     
            if (bool == 0) {       
                // Show Error       
                return false;     
            }   
            else{
                callback();
            }
        } 
    }); 
}
票数 1
EN

Stack Overflow用户

发布于 2011-04-05 23:38:22

您可以将隐藏/显示代码放在回调函数中,以便成功调用AJAX吗?因此,只有当返回成功时,它才会在“表单”中显示下一页。

从本质上讲,AJAX是一个异步调用,因此当调用返回时发生某些事情的最佳方法是将其放入或从回调函数调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5554460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档