首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery ajax返回

jQuery ajax返回
EN

Stack Overflow用户
提问于 2012-06-21 11:02:45
回答 1查看 103关注 0票数 1

我有一个滑块与3个幻灯片-介绍,问题,提交。

现在,我想确保如果问题回答错误,人们就不能滑动提交。

移动幻灯片的功能如下所示:

代码语言:javascript
复制
function changeSlide(slide){

        // In case current slide is question check the answer
        if (jQuery('.modalSteps li.current',base).hasClass('questionStep')){
            checkAnswer(jQuery('input[name="question_id"]',base).val(), jQuery('input[name="answer"]:checked',base).val());
        }

        jQuery('.modalSteps li.current',base).fadeOut('fast',function(){
            jQuery(this).removeClass('current');
            jQuery(slide).fadeIn('fast',function(){
                jQuery(slide).addClass('current');
            });
        });

        // In case the new slide is question, load the question
        if (jQuery(slide).hasClass('questionStep')){
            var country = jQuery('input[name="country"]:checked',base).val();
            loadQuestion(country);
        }
    }

现在,正如您在第一行看到的,我调用了函数checkAnswer,该函数接受问题的id和答案的id,并将其传递给AJAX调用。

代码语言:javascript
复制
function checkAnswer(question, answer){
        jQuery.ajax({
            url: window.base_url+'ajax/check_answer/'+question+'/'+answer+'/',
            success: function(data){
                if (!data.success){
                    jQuery('.question',base).html(data.message);
                }
            }
        });
    }

我遇到的问题是我不能说

代码语言:javascript
复制
if(checkAnswer(...)){}

由于Ajax,它总是返回false或undefined。我需要的是这样的东西:

代码语言:javascript
复制
 function changeSlide(slide){

        // In case current slide is question check the answer
        if (jQuery('.modalSteps li.current',base).hasClass('questionStep')){
            if (!checkAnswer(jQuery('input[name="question_id"]',base).val(), jQuery('input[name="answer"]:checked',base).val())){
              return false;
            }
        }
...

因此,它将阻止滑梯继续前行。

现在,当我思考它的时候,我可能会看到像“错误的答案”这样的幻灯片,所以我可以把幻灯片移到那里,但我还是希望看到第一个解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-21 11:11:29

您可以将ajax的异步选项设置为false,以等待服务器的回复。因此,代码可能如下所示。

代码语言:javascript
复制
function checkAnswer(question, answer){
    result = false;
    jQuery.ajax({
        async: false,
        url: window.base_url+'ajax/check_answer/'+question+'/'+answer+'/',
        success: function(data){
            result = data.success
            if (!data.success){
                jQuery('.question',base).html(data.message);
            }
        }
    });

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

https://stackoverflow.com/questions/11130984

复制
相关文章

相似问题

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