jquery - 将json加载到变量中

我必须做一些非常简单的事情,但据我所知,似乎没有一种简单的方法可以做到这一点。我只想从远程源加载 JSON 数据并使用 jQuery 将其存储在全局 Javascript 变量中。这是我所拥有的:

var my_json;
$.getJSON(my_url, function(json) {
  var my_json = json;
});

my_json 变量仍未定义。我认为这显然是一个范围问题。在我看来 $.getJSON 方法应该返回 JSON,但它返回一个 XMLHttpRequest 对象。如果我这样做:

request = $.getJSON(my_url);
my_json = request.responseText.evalJSON();

这不起作用,因为在 readystate == 4 之前,responsetext 保持为空。看来您必须使用回调函数来返回响应文本,因为它会在成功时触发。

不可能这么难!对吧?

最佳答案

这样就可以了:

var json = (function () {
    var json = null;
    $.ajax({
        'async': false,
        'global': false,
        'url': my_url,
        'dataType': "json",
        'success': function (data) {
            json = data;
        }
    });
    return json;
})(); 

主要问题是 $.getJSON 将异步运行,因此您的 Javascript 将通过调用它的表达式,甚至在其 success 回调触发之前,所以有不保证您的变量会捕获任何数据。

请特别注意上述 ajax 调用中的 'async': false 选项。 manual说:

By default, all requests are sent asynchronous (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.

https://stackoverflow.com/questions/2177548/

相关文章:

javascript - 如何使用 JSON 数据填充选择框的选项?

ios - 如何在 Swift 中组合两个 Dictionary 实例?

c# - asp.net core 1.0 web api使用camelcase

javascript - 从名称、值 JSON 数组中获取一项

javascript - 是否有任何将 json 转换为 url 参数的 native 函数?

java - jackson JSON : get node name from json-tree

c# - 在 C# 中将对象转换为 JSON 字符串

java - 如何解析嵌套 JSON 结果中的动态 JSON 键?

json - Postgres JSON 数据类型 Rails 查询

java - 在 Spring Boot 中返回 JSON 对象作为响应