jquery - jquery中如何从匿名函数返回值

标签 jquery jquery-selectors

function test() {
    var flag1 = false;
    if ($('#field1').attr('value') || !$('#field1').attr('value')) {
        $.ajaxSetup({
            cache: false
        });
        $.getJSON("test_term.php", {
            'term1': $("#cde").attr('value'),
            'cd3': $("#cde3").attr('value')
        }, function(data) {
            if (data[0].stss == 'K') {
                var status = data[0].stss;
                flag1 = true;

            } else if (data[0].stss == 'U' || data[0].stss == '') {
                flag1 = false;
                return;
            }
        });
    }
    alert("ANonymous value" + flag1);
    return flag1;
}

如何从 getJson() 中使用的匿名函数返回“flag1”值? 它总是返回 false ,这是在顶部引用的。

最佳答案

按照您的尝试方式,这是不可能的。

Ajax 调用是异步的,只要准备好就会返回。您传递给 getJSON() 的内部函数在外部函数 test() 完成运行后运行良好。

这意味着 - 当 Ajax 调用返回时您希望发生什么 - 将其放入回调函数中。请勿使用标志和返回值。

例如

function do something(flag) {
  // do something
}

function test() {
  if ($('#field1').attr('value') || !$('#field1').attr('value')) {
    $.ajaxSetup({
        cache: false
    });
    $.getJSON("test_term.php", {
        'term1': $("#cde").attr('value'),
        'cd3': $("#cde3").attr('value')
    }, function(data) {
        if (data[0].stss == 'K') {
            var status = data[0].stss;
            doSomething(true);
        } else if (data[0].stss == 'U' || data[0].stss == '') {
            doSomething(false);
        }
    });
  }
}

关于jquery - jquery中如何从匿名函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114382/

相关文章:

javascript - 在 Polymer 元素中使用 JavaScript

javascript - 如何将日期时间字符串转换为特定的日期时间格式

jquery - 检查 jquery 中是否存在按 id/label 进行 optgroup ?

jquery - 试图了解 jQuery .css 如何在 native javascript 中运行?

javascript - jquery 旋转图像并用同名文件保存它们(覆盖)?

jquery - jsTree创建节点不起作用

javascript - 无法读取 null 的属性 'complete' - 完成

jquery - 如何显示当前li的唯一子节点并隐藏其他li子节点

jquery - 快速选择带有css背景图片的所有元素

javascript - 可选的 div 背景颜色