How to store JSON response in jQuery?

2019-07-29 01:16发布

我想存储在一个全局变量的json响应的话,我可以用它在我的应用程序而不进行的getJSON请求不止一次。

var data;
$.getJSON("panorama.json",function(json){
data = json.images[0].src;
console.log(data);          
});


console.log(data);

如果我登录它的实际要求其优良的,但我得到“未定义”在其他地方。 任何评论appriciated。

编辑[从评论复制]:试了...

$.myglobals = { result: "unset" } 

$(document).ready(function() { 

  $.getJSON( "panorama.json", function(json) { 
    $.myglobals.result = json.images[0].src; 
    console.log($.myglobals.result);     
  });

  console.log($.myglobals.result); 
}) ;

第一个日志是好的,第二个是不确定的。

编辑[从答案复制]:

实际上这两种方法奏效

有趣的是,我的要求是一个函数,我试图在同一功能的请求之后进入电影我的全局变量

当我accesed它的功能外,它的工作就像一个魅力

Answer 1:

如果你真正的代码的结构一样,那么你有一个问题,试图访问一个尚未设置的数据。 仅仅因为你的$.getJSON()是上述console.log()并不意味着你得到的回应你的日志数据的前值。

所以,你的问题不是规模,而是时机:介绍一些服务器端的滞后和您的解决方案可能也崩溃。

也许你应该设置一些标志,如果收到的回应:

var data, dataReceived = false;

$.getJSON("panorama.json",function(json){
  data = json.images[0].src;
  dataReceived = true;
  console.log(data);                    
});


// somwhere later
if (dataReceived) {
  console.log(data);
} else {
  // you could use setTimeout() or setInterval here to re-check
  console.log("data not received yet");
}


Answer 2:

你可以将它插入在DOM属性(如#ID),并根据需要进行检索。



Answer 3:

这里有一个方法,可以让你设置一个$(文件)。就绪()的变量,并在不同的$(document)。就绪使用()。 myglobals是一个命名空间对象,它可以说是降低你的全局变量与别人的碰撞的可能性,特别是如果你的名字的东西比更聪明“myglobals。”

$.myglobals = {
  result: "unset" 
}

$(document).ready(function() {

  function pretend_JSON_call() {
    $.myglobals.result = {'a':"hello", 'b':"world" };
  }

  pretend_JSON_call();
});

$(document).ready(function() {
  alert($.myglobals.result['a']);
  alert($.myglobals.result['b']);
});

瞬态链接到jsbin上面的代码。



Answer 4:

$ .getJSON触发一个AJAX请求(在问题是异步的范围的关键字)。您的变量是未定义的,因为它没有被定义的是,所述响应还没有完成。 其他人建议在你的代码进一步向下移动你的console.log,但不能保证,除非你的逻辑与一个回调函数同步这将是可用的。 $ .getJSON接受一个回调函数作为其参数之一。

$.getJSON( "myData.json", function( data ) {
    //Do whatever, this is a callback
    $.each( data, function(key, val) {
       //You can get even more specific like so
    });
});


文章来源: How to store JSON response in jQuery?