[英]How to pass an external JSON file into a javascript variable that can be accessible anywhere
我有一个在此结构中的项目中一直使用的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用户,因为ios不接受cookie,您也可以使用localStorage
您可以使用事件来传递数据:
// in ajax success
var event = new CustomEvent("custom-event", {data: result});
window.dispatchEvent(event);
然后在bill.js脚本或您需要数据的任何地方:
window.addEventListener("custom-event", function(e) {
console.log("custom-event", e.data);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.