在异步ajax调用中返回true

时间:2018-06-29 17:26:59

标签: jquery synchronous

我正在使用插件http://www.jquery-steps.com/,根据文档,我应该返回true,以允许用户传递到下一张幻灯片。我正在验证邮政编码是否存在于我们的数据库中。仅当服务器验证邮政编码在我们的数据库中存在时,才允许用户单击next

我尝试过的事情

onStepChanging: function (event, currentIndex, newIndex) {
    if(currentIndex == 2){
        getZipCode($("#zip").val()).done(function(returnedData){
            if(returnedData.length > 0){
                return true;
            }else{
                setHelperText($("#zip_helper"), 'Zip Code doesn\'t exists in our database. Pick the closest one please');
            }
        }).fail(function () {
            setHelperText($("#zip_helper"),'There was an error connecting to our servers');
        });

        return false;
        }
    }
    function getZipCode(zip_code) {
    return $.get('../ajax/zip-code', {
        q: zip_code
    });
}

我期望的结果

仅当我们的数据库中存在邮政编码时,用户才可以单击下一步。

从我在网上阅读的内容来看,问题在于我最后要返回return false,因此脚本始终返回false。我如何return true内的.done()才能适用于外部范围?

1 个答案:

答案 0 :(得分:0)

  

在同步Ajax调用中返回true

也许您是说异步

  

如何在.done()内部返回true以适用于外部范围?

简短的答案是您不能这样做。如果他们的库支持promise驱动的回调,那么这里是一个选项,但是浏览他们的文档后,看起来就不一样了。您需要重组代码或使用其他库。在不熟悉所有代码或所使用的库的情况下,我无法提供详细信息,但我建议进行重组,以便在加载steps插件之前从服务器中获取必要的数据