function test(){
    $.getJSON( "notebook-json-data.php", function( data ) {
       var myData = data;
    });
 }

在我的函数中,我得到了json对象,但我想从其函数范围之外访问 myData 变量。

我试过在函数外设置 var myData ,但是没有运气.. :(

我不熟悉JSON,是否需要任何解析?

如何将此变量设置为全局?

请帮忙...

最佳答案

不要尝试将myData设置为全局变量-因为getJSON是异步的,所以它不起作用。使用promise:

function test() {
  return $.getJSON('notebook-json-data.php');
}

$.when(test()).then(function (data) {
  console.log(data);
});

或回调:
function test(callback) {
  $.getJSON('notebook-json-data.php', function (data) {
    callback(data);
  });
}

test(function (data) {
  console.log(data);
});

编辑

由于您要在代码的其他区域中使用数据,因此请使用闭包创建一个环境,使您的变量不会泄漏到全局空间中。例如,使用回调:
(function () {

  var myData;

  function test(callback) {
    $.getJSON('notebook-json-data.php', function (data) {
      callback(data);
    });
  }

  test(function (data) {
    myData = data;
    autoPopulate('field', 'id');
  });

  function autoPopulate(field, id) {
    console.log(myData);
  }

});
myData缓存为特定于该闭包的全局变量。注意,其他函数仅在回调完成后才能使用该变量。

关于javascript - JavaScript将数据从json获取到全局变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24909006/

10-09 20:04
查看更多