为了账号安全,请及时绑定邮箱和手机立即绑定

将json载入变量

将json载入变量

小唯快跑啊 2019-10-25 10:17:29
我必须做一些非常简单的事情,但是据我所知,似乎没有一个简单的方法可以做到这一点。我只想从远程源加载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仍为null。似乎您必须使用回调函数来返回responsetext,因为它会在成功时触发。不可能这么难!对?
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

这样做:


var json = (function () {

    var json = null;

    $.ajax({

        'async': false,

        'global': false,

        'url': my_url,

        'dataType': "json",

        'success': function (data) {

            json = data;

        }

    });

    return json;

})(); 

主要问题是$.getJSON它将异步运行,因此,即使在其success回调触发之前,您的Javascript也会经过调用它的表达式之后,因此无法保证您的变量将捕获任何数据。


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


默认情况下,所有请求都是异步发送的(即默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。


查看完整回答
反对 回复 2019-10-25
?
PIPIONE

TA贡献1829条经验 获得超9个赞

代码位应为:


var my_json;

$.getJSON(my_url, function(json) {

  my_json = json;

});


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 393 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信