加载JSON到variables

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

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

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

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

这是行不通的,因为直到readystate == 4,responsetext保持为空。 看来你必须使用callback函数来返回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将asynchronous运行,因此,即使在successcallback触发之前,您的Javascript仍将通过expression式进行调用,所以不能保证您的variables将捕获任何数据。

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

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

代码位应为:

 var my_json; $.getJSON(my_url, function(json) { my_json = json; }); 
 <input class="pull-right" id="currSpecID" name="currSpecID" value=""> $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){ alert("Data: " + data + "\nStatus: " + status); $("#currSpecID").val(data); }); 

在这里输入图像描述 在这里输入图像描述

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