我有一个 json 文件,我一直在我的项目中使用这种结构
<script src="js/main.js"></script>
<script>
var data = {"bills":[{"id":1,"name":"DStv","reference":"SmartCard Number","logo":"bill\/logo\/24Io6IqObQ8ddi5.jpg","active":1,"lifestyle":0},{"id":3,"name":"GOtv","reference":"IUC Number","logo":"bill\/logo\/mCNl5X1ZCfph4kg.jpg","active":1,"lifestyle":0},{"id":6,"name":"Startimes"...
</script>
<script src="js/bill.js"></script>
<script src="js/airtime.js"></script>
从上面的示例中可以看出,json 文件已经传递给数据变量...我在其下放置了其他外部 javascript 文件。
与此同时,现在可以通过链接生成/访问 json 文件,并且我被告知使用 ajax 将 json 数据获取到项目中。
我的 main.js
文件中有这段代码,我有以下代码,但它在 bills.js
文件中不可访问
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://example.com/bills/resources",
success: function(result)
{
data = result;
loadData(result);
}
});
});
最佳答案
如果它是一个静态变量并且只被拉取一次那么你可以使用 Javascript cookie 而不是在同一个文件中创建全局变量,以便在您需要的地方获取值
$.ajax({
type: "GET",
url: "http://bills.payit.ng/bills/resources",
success: function(result)
{
data = result;
setCookie("myStaticDataPerDay",data,1)
loadData(result);
}
});
});
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
你应该能够通过
检索它console.log(getCookie("myStaticDataPerDay"));
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
也可以保存在jquery cookie中
$.ajax({
type: "GET",
url: "http://bills.payit.ng/bills/resources",
success: function(result)
{
data = result;
$.cookie('myStaticData', data);
loadData(result);
}
});
});
你需要通过
获取值var data=JSON.parse($.cookie("MyStaticData"))
更新 如果你有 IOS 用户,你也可以使用 localStorage,因为 ios 不接受 cookie
关于javascript - 如何将外部 JSON 文件传递到可以在任何地方访问的 javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48638120/