javascript - 如何将 AJAX 检索的值返回给 JavaScript 中当前函数的父函数?

标签 javascript jquery ajax

我有以下 JavaScript(和 jQuery)代码:

function checkEmail(email) {
    if (email.length) {
        $.getJSON('ajax/validate', {email: email}, function(data){
            if (data == false) {
                // stuff
            }
            return data;
        })
    }
}

我希望匿名函数返回数据给父函数checkEmail()。我试着做这样的事情:

function checkEmail(email) {
    if (email.length) {
        var ret = null;
        $.getJSON('ajax/validate', {email: email}, function(data){
            if (data == false) {
                // stuff
            }
            ret = data;
        })
        return ret;
    }
}

当然这不会起作用,因为 $.getJSON() 调用是异步的,因此它会在 GET 请求完成之前返回 ret

有什么想法吗?

谢谢!

最佳答案

通常,处理此类问题的最佳方法是使用某种形式的回调函数。实际上,它确实是唯一可行的解​​决方案——唯一的其他选择是编写您自己的浏览器扩展程序,这有点多(除非您真的喜欢用头撞墙)。这些版 block 上其实有很多类似的问题:你可以试着搜索一些,很多都很好。

修改代码:

function checkEmail(email) {
    /*
        original parts of the function here!
    */

    if (email.length) {
        $.getJSON('ajax/validate', {email: email}, function(data){
            if (data == false) {
                // stuff
            }
            checkEmailResponse( data );
        })
    }
}

function checkEmailResponse( data )
{
    // do something with the data.
}

关于javascript - 如何将 AJAX 检索的值返回给 JavaScript 中当前函数的父函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461895/

相关文章:

php - jQuery 在多个输入字段上自动完成

javascript - 对象数组中的 indexOf 问题。 react 应用程序

javascript - 如何在框的中央插入不同尺寸的图像?

jquery - 如何使用 jQuery 选择 anchor 标记内的文本

javascript - 无法在 iOS 中定位点击的元素

javascript - Rails 3 使用 jquery 制作 ajax 并执行 .js.erb

javascript - 如何在第二个ajax调用之外获取值

php - 如何将多个 javascript 文件的请求组合成一个 http 请求?

javascript - Google News API 给出错误 Uncaught SyntaxError : Unexpected token ')'

javascript - pagePiling.js 禁用鼠标滚动