javascript - 如何将外部 JSON 文件传递​​到可以在任何地方访问的 javascript 变量

标签 javascript jquery json ajax

我有一个 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/

相关文章:

php - 如何将值传递给模态?

javascript - 编写 MongoDB shell 脚本,以干净格式返回 ID

javascript - jquery :selected not working as expected

javascript - 如何在不使用 jQuery 刷新页面的情况下实现这一点?

javascript - 如何创建解析为 thenable 的 javascript promise?

javascript - 有没有办法在 JavaScript 中获取扩展原型(prototype)的所有对象

javascript - Angular JSON 仅适用于本地 json 文件,不适用于 url

sql - 避免在 CASE 语句中进行 PostgreSQL 类型评估

javascript - 在 ASP.NET MVC 3 中使用 ajax 将 xml 字符串发送到 Controller

javascript - 如何为 JavaScript 函数设置变量来嵌入视频?