关于jquery:将json加载到变量中

load json into variable

我必须做一些非常简单的事情,但据我所知,这似乎不是一个简单的方法。我只想从远程源加载JSON数据,并使用jquery将其存储在全局javascript变量中。以下是我的资料:

1
2
3
4
var my_json;
$.getJSON(my_url, function(json) {
  var my_json = json;
});

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

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

这不起作用,因为在readystate==4之前,responseText保持为空。似乎您必须使用回调函数返回responsetext,因为它在成功时激发。

不会这么难的!对吗?


这样就可以做到:

1
2
3
4
5
6
7
8
9
10
11
12
13
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选项。手册上说:

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.


代码位应为:

1
2
3
4
var my_json;
$.getJSON(my_url, function(json) {
  my_json = json;
});


  • 这将把JSON文件从外部获取到JavaScript变量。
  • 现在,这个示例数据将包含JSON文件的值。

    var sample_data = '';
    $.getJSON("sample.json", function (data) {
    sample_data = data;
    $.each(data, function (key, value) {
    console.log(sample_data);


1
2
3
4
5
6
7
8
var itens = null;
$.getJSON("yourfile.json", function(data) {
  itens = data;
  itens.forEach(function(item) {
    console.log(item);
  });
});
console.log(itens);
1
2
3
4
5
6
7
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js">
</head>
<body>
</body>
</html>


1
2
3
4
5
6
7
<input  class="pull-right" id="currSpecID" name="currSpecID" value="">

   $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){
       alert("Data:" + data +"
Status:" + status);
    $("#currSpecID").val(data);
    });

enter image description hereenter image description here