javascript - js变量作用域问题

标签 javascript jquery

如何使数据覆盖结果变量?

var ajax = {
    get : {
        venues : function(search){
            var results = "@";
            $.getJSON("http://x.com/some.php?term="+search+"&callback=?",function(data){ results = data; });
            return results;
        }
    }
};

最佳答案

数据正在覆盖results,就在返回results之后。

您可以使用 ajax函数而不是 getJSON,因为 getJSON只是

的简写
$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

然后还将 async 设置为 false,这样调用就会阻塞。

但是,在您的情况下这将不起作用,因为 JSONP 请求(使用 "?callback=?")不能同步。

另一个(更好的)选项是让任何依赖于 results 返回值的代码都被 success 回调调用。

所以,不是这样的:

var results = ajax.get.venues('search');
$('#results').html(translateResults(results));

也许是这样的:

ajax.get.venues('search', function (results) {
    $('#results').html(translateResults(results));
});

venues = function (search, callback) {
    $.getJSON("http://x.com/some.php?term="+search+"&callback=?",
              function(data){
                  callback(data); 
              });
};

关于javascript - js变量作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3710315/

相关文章:

javascript - 在悬停父元素时使用 (this) 选择类的特定实例

jquery - 在 Kendo Datepicker 中使日期不可选择或不可单击

javascript - 使用 JSF 和 primefaces 通过 JavaScript 将表单数据传递到支持 bean

javascript - Angular 2简单动画

javascript - 如何在 Polymer 2.x 中设置属性值?

javascript - 如何获取触发更改事件的 Bootstrap slider 的父级

jquery - 无法使用 jQuery Data() API 设置数据属性

javascript - 如何显示数据不断变化的api的响应?

javascript - 链接ajax并按顺序执行。 Jquery 延迟

javascript - 从外部js文件调用函数/嵌套函数