我想获取外部 json 文件 (locations.json) 并将内容加载到变量中。然后,我想使用此处提供的信息来使用此变量:http://www.json.org/js.html
我在尝试将外部 json 加载到变量时遇到了很多麻烦。我已经仔细查看了这个( load json into variable )页面,但没有一个页面真正填充了该变量。当稍后显示变量的内容时,它看起来是空的。
$("#testContain").html("<p>" + json + "</p>");
使用最后一个链接中列出的方法,这会显示“未定义”。
我使用的 json 文件如下所示:
[{"id":"1","locname":"Dunstable Downs","lat":"51.8646","lng":"-0.536957","address":"Chiltern Gateway Centre","address2":"","city":"","state":"England","postal":"","phone":"","web":"http:\/\/www.nationaltrust.org.uk\/main\/w-dunstabledownscountrysidecentrewhipsnadeestate","hours1":"","hours2":"","hours3":""},
{"id":"2","locname":"West Delta Park","lat":"45.5974","lng":"-122.688","address":"N Broadacre St and N Expo Rd, Portland","address2":"","city":"","state":"OR","postal":"","phone":"","web":"http:\/\/en.wikipedia.org\/wiki\/Delta_Park","hours1":"","hours2":"","hours3":""}]
大家有什么建议吗?
最佳答案
问题是请求是异步的。您可以按照您链接到的问题的已接受答案的建议进行同步调用,但这通常不是一个好主意,因为它会在等待响应时完全卡住浏览器。
变量分配得很好,但是当你在请求之后使用它时,你必须确保它是在得到响应之后,而不是在发送请求之后。在 getJSON
方法的回调中使用值是确保您拥有该值的最简单方法:
var my_json;
$.getJSON(my_url, function(json) {
my_json = json;
// here you have the value
});
// here you don't have the value, as this happens before the response arrives
关于javascript - 将整个 json 文件作为数组加载到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675589/