我有这个.json
文件,我想将其加载到一个全局变量中,我可以使用AJAX,JavaScript从所有Web访问该变量。我该怎么做?我想通过索引访问变量,例如my_var[1].img
。我读了很多文章,但没有找到解决方案。
myData.json
{
"data": [
{ "img": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRHQ5Sf2Cffo0QdRtFw0t8zdk90FWgywc1kDKAuOV874zYO_0pC", "other": "Ra.One" },
{ "img": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQkVg9n2UbPTeiPNGUOw2SqdAzJsZzuHrkYw78sjaMMCcTWcuFjUtT3NZ8", "other": "3 Idiots" },
{ "img": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ0Wam0d96ASpEHDFfskGTBdILKlDpXAKzELFdfdKmkoye5JmrF9qS1u1qtZw", "other": "Chaalis Chauraasi (4084)" },
{ "img": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSAf7q-m96JL88_W8EATmVlwCfOKb5dw1keyDSO6PWwzaSVtqGyix2lvE", "other": "Gangs Of Wasseypur" }
]}
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>MyWeb</title>
<script type="text/javascript" src="myData.json"></script>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<script>
var my_json;
$.getJSON("myData.json", function(json) {
my_json = json;
});
</script>
</body>
</html>
鉴于这jQuery.getJSON
是一个异步函数,您必须在回调中使用数据。如果要将其保存在全局变量中,请记住,仍然必须使用由的回调调用的函数getJSON
才能使用它(尽管我不推荐使用)。给定您的JSON结构,您可以使用来访问图像json.data[index].img
,并像这样创建全局变量my_json = json.data
以稍后使用它my_json[index].img
。这是一个例子:
var my_json;
function useTheData() {
for (var i = 0; i < my_json.length; i++) {
console.log(i, "-", my_json[i].img);
}
}
$.getJSON("myData.json", function(json) {
my_json = json.data;
useTheData();
});
如果您想访问脚本主体中的变量(即不在另一个函数中),那么您唯一可以做的就是使用通过创建的同步请求XMLHttpRequest
,如下所示:
var xhr = new XMLHttpRequest(),
my_json;
xhr.open('GET', 'myData.json', false);
xhr.send();
my_json = JSON.parse(xhr.responseText).data;
// Now use the my_json variable anywhere you want
请注意,这将减慢脚本速度并暂停页面的呈现和执行,直到请求完成为止,因此,我不建议这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句