将Json数据保存在静态脚本文件中读取

一些常用的数据例如一些网站的区域信息被改变的可能性不大,一般不通过请求获取,于是我们选择存在静态文件中,例如以下Demo:

1.动态加载Json数据显示到前台

     [HttpPost]
        public ActionResult GetData()
        {
            List<Area> areaList = new List<Area>()
            {
                new Area()
                {
                     AreaID=1,
                      AreaName="福建省",
                      Depth=1,
                       cityList=new List<Area>()
                       {
                            new Area(){ AreaID=2, AreaName="福州市", Depth=2},
                            new Area(){ AreaID=2, AreaName="厦门市", Depth=2}
                       }
                },
                new Area()
                {
                     AreaID=1,
                      AreaName="四川省",
                      Depth=1,
                       cityList=new List<Area>()
                       {
                            new Area(){ AreaID=2, AreaName="成都市", Depth=2}
                       }
                }
            };
            return this.Write(Request["callback"], "", new { success = true, returnData = areaList });
        }
        /// <summary>
        /// 转换输出
        /// </summary>
        /// <param name="callBack"></param>
        /// <param name="paramName"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        public ContentResult Write(string callBack, string paramName, object o)
        {
            Newtonsoft.Json.JsonSerializerSettings jSetting = new Newtonsoft.Json.JsonSerializerSettings();
            jSetting.NullValueHandling = NullValueHandling.Ignore;
            jSetting.DateFormatString = "yyyy-MM-dd HH:mm:ss";
            if (callBack == "" && paramName == "")
                return Content(JsonConvert.SerializeObject(o, jSetting), "application/json");
            else if (callBack != "")
                return Content(callBack + "(" + JsonConvert.SerializeObject(o, jSetting) + ");", "application/x-javascript");
            else
                return Content("var " + paramName + " = " + JsonConvert.SerializeObject(o, jSetting) + ";", "application/x-javascript");
        }
<div id="main">
    <ul id="ulmain">

    </ul>
</div>
 $.ajax({
            url: ‘/Home/GetData‘,
            dataType: ‘jsonp‘,
            type: ‘post‘,
            success: function (r) {
                var html = ‘‘;
                for (var i = 0; i < r.returnData.length; i++) {
                    var item = r.returnData[i];
                    html += ‘<li>‘ + item.AreaName + ‘</li>‘
                    var hc = ‘‘;
                    if (item.cityList.length > 0) {
                        hc += ‘<ul>‘;
                        for (var j = 0; j < item.cityList.length; j++) {
                            var city = item.cityList[j];
                            hc += ‘<li>‘ + city.AreaName + ‘</li>‘
                        }
                        hc += ‘</ul>‘;
                    }
                    html += hc;
                }

                $("#ulmain").html(html);
            }
        });

结果如下:

2.生成静态文件

      /// <summary>
        /// 生成静态JS文件
        /// </summary>
        /// <returns></returns>
        public ActionResult CreateFile()
        {

            List<Area> areaList = new List<Area>()
            {
                new Area()
                {
                     AreaID=1,
                      AreaName="福建省",
                      Depth=1,
                       cityList=new List<Area>()
                       {
                            new Area(){ AreaID=2, AreaName="福州市", Depth=2},
                            new Area(){ AreaID=2, AreaName="厦门市", Depth=2}
                       }
                },
                new Area()
                {
                     AreaID=1,
                      AreaName="四川省",
                      Depth=1,
                       cityList=new List<Area>()
                       {
                            new Area(){ AreaID=2, AreaName="成都市", Depth=2}
                       }
                }
            };

             Newtonsoft.Json.JsonSerializerSettings jSetting = new Newtonsoft.Json.JsonSerializerSettings();
             string body = "var citylist = " + Newtonsoft.Json.JsonConvert.SerializeObject(areaList, jSetting) + ";";
             System.IO.File.WriteAllText(Server.MapPath("~/Scripts/temp.js"), body, System.Text.Encoding.UTF8);
             return Json(new { success = true, msg = "生成成功" }, JsonRequestBehavior.AllowGet);
        }   
<button id="btnCreate">
    生成静态JS文件
</button>
    $("#btnCreate").click(function () {

            $.get("/Home/CreateFile", "", function (r) {
                if (r.success)
                {
                    alert("生成成功");
                }
            });
        });

静态文件在~/Scripts/temp.js:

内容如下:

3.注释掉AJAX请求,指向静态文件读取数据

别忘记添加:<script src="~/Scripts/temp.js"></script>

4.最终效果展示

没有网络请求,读取的是静态文件,根据具体情况具体操作。

时间: 11-17

将Json数据保存在静态脚本文件中读取的相关文章

PHP写文件——将用户提交的数据保存到服务器的文件中

首先编写html页面: <!DOCTYPE html> <html> <head lang="zh_CN"> <meta charset="UTF-8"> <title>订单页面</title> </head> <body> <h2>Jason的购物清单</h2> <form method="post" action=&q

pyhton 从web获取json数据 保存到本地然后再读取

从web中获取json数据直接进行处理总认为太慢.主要是从web中获取获取数据的过程有点慢. 所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作.应该就要快非常多. 这中间的主要问题就是格式的转换问题:1.将获取取的json数据序列化后保存到本地文件里:2.从文件里逐行读取数据,再将其反序列化为json格式. 详细的一个演示样例程序例如以下: [为保护个人信息,程序中的一些代码不完整] from urllib.request import urlopen;

VB.NET 从XML文件中读取内容到JSON

一.关于本文 本文承接了上一篇博客的内容.在上篇博客中,通过函数WriteJsonToXml将一个JSON格式的文件写入了一个对应的XML文件中.本文中则给出了函数RecoverJsonFromXml的代码,可以将XML恢复成JSON格式的文本. 运行本文中代码的环境与上篇博客相同. 待读取的XML文档内容如下: <?xml version="1.0" encoding="gb2312"?> <!--这个XML文档中存储了一个JSON格式的信息--

从plist文件中读取数据

//从plist文件中读取数据- (void)readDataFromPlist{    //1.先获取文件路径    NSString * filePath = [[NSBundle mainBundle] pathForResource:@"Book" ofType:@"plist"];    //2.根据路径初始化字典对象    self.dic = [NSMutableDictionary dictionaryWithContentsOfFile:fileP

Mean and Standard Deviation-从文件中读取数据计算其平均数和标准差

Meanand Standard Deviation-从文件中读取数据计算其平均数和标准差 //Meanand Standard Deviation-从文件中读取数据计算其平均数和标准差 #include<iostream> #include<fstream> #include<cstdlib> #include<cmath>   int main() {     usingnamespace std;     ifstream fin;     ofstr

从Matlab .fig文件中读取数据,并重新绘图

Matlab提供了强大的函数集合,可以从.fig文件中读取图中的数据,并重新绘制图形.如果原始数据丢失,我们可以从.fig文件中恢复原始数据,并基于原始数据做进一步的处理. 以下是一个从两个不同文件中读取原始数据,并重新绘制图形的例子. h1 = openfig('1.fig','reuse'); % open figure D1=get(gca,'Children'); %get the handle of the line object XData1=get(D1,'XData'); %ge

在文件中读取、存储Json格式的字符串

public class Weather { static readonly string FilePath = System.Environment.CurrentDirectory + @"\Area.txt"; public static Models.Area GetCurrentArea() { var file = new FileInfo(FilePath); Models.Area result; if (!file.Exists) { //文件不存在就返回一个默认值,

c语言从文件中读取数据作为输入

这次在厦门大学夏令营机试中遇到一个问题,它要求数据输入一定要从文件中输入,而不是从命令行中输入. 当时我并不知道这个,所以机试我就GG了,回来之后立马翻看了书,查了资料.现在是搞清楚了. 1 #include <stdio.h> 2 3 // 计算斐波拉契数列 4 5 int fib(int n) 6 { 7 if(n == 0 || n == 1) 8 return n; 9 else 10 return fib(n-2) + fib(n-1); 11 } 12 13 int main()

【Python】从文件中读取数据

从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 8979323846 2643383279 5028841971 file_reader.py with open("PI_DESC.txt") as file_object: contents = file_object.read() print(contents) 我们可以看出,读取