html5之本地存储localStorage示例

html5之本地存储localStorage示例

<!-- 
注意: 
index.html 文件中的IP指的是服务器的访问地址,请根据具体需求走。本案例只做参考。
返回的json格式,大家可通过本地.json文件模拟,具体格式如下:
{
    "cindex": 0,
    "max": 0,
    "min": 0,
    "p_id": 0,
    "paper_id": 0,
    "score": "",
    "scoreRule": "",
    "score_type": "",
    "title": "哈哈哈哈哈",
    "totalNum": 0,
    "type": 1,
    "unmber": ""
}
-->        

 

index.html 文件

<!doctype html>
<html lang="en">
 <head>
  <title> html5本地缓存示例 </title>
  <meta charset="utf-8">
  <meta name="description" content="html5本地缓存示例">
 </head>

 <body>
 <div>
    <input type="text" id="jsonName"/>
    <input type="button" value="按存储名查询" onclick="findStorage()"/>
    <input type="button" value="按存储名删除" onclick="deleteStorage()"/>
    <div id="storageInfo">
    </div>
 </div>

 <p>
    1、针对客户端而言,localStorage 本地永久存储;sessionStorage 临时存储;<br/>
    2、localStorage 与 sessionStorage 存储大小5MB;注意不要存储敏感信息<br/>
    3、以ajax取得数据为例,将返回的json存储至localStorage中
 </p>
 <script type="text/javascript" src="js/lib/jquery-1.9.1.min.js"></script>
 <script>
    /*定义对象*/
    var questionIPort = "http://IP/yitaifront/normalcase/test?id=";

    function getElObj(elId){
    //取对象
        return document.getElementById(elId);
    }

    function isEmptyObj(data){
    //判空
        if(data == null || data == ""){
            return true;
        }else{
            return false;
        }
    }

    function saveStorage(saveName,data){
    //存数据
        if(isEmptyObj(data)){
            try{
                 console.log("数据保存失败");
                 window.localStorage.setItem(saveName,"");
            }catch(oException){
                 if(oException.name == 'QuotaExceededError'){
                    removeAllStorage(saveName, "");  
                 }
            }
        }else{
            var str = JSON.stringify(data);
            try{
                 window.localStorage.setItem(saveName,str);
                 console.log("整个数据已保存,取值name为"+saveName);
            }catch(oException){
                 if(oException.name == 'QuotaExceededError'){
                    removeAllStorage(saveName, str);  
                 }
            }
        }
    }

    function removeAllStorage(saveName, str){
    //清空所有
        console.log('超出本地存储限定范围!');
        //如果历史信息不重要了,可清空后再设置
        localStorage.clear();
        window.localStorage.setItem(saveName,str);
    }

    function removeStorageByCount(count){
        var countInt = count-0;
        console.log(window.localStorage);
        for(var i = 1; i <= countInt; i++){
            var storageKey = window.localStorage.key(i);
            console.log(""+i+"个对象的key值为"+storageKey);
            window.localStorage.removeItem(storageKey);
        }
        console.log("超出本地存储限定范围!共删除"+i+"个对象");
    }

    function findStorage(){
    //查数据
        var targetObj = getElObj("jsonName").value;
        if(isEmptyObj(targetObj)){
            getElObj("storageInfo").innerHTML = "";
            return ;
        }else{
            var str = window.localStorage.getItem(targetObj);
            var data = JSON.parse(str);
            if(data != null && data != ""){
                getElObj("storageInfo").innerHTML = data.title;
                console.log(data.title);    
            }else{
                getElObj("storageInfo").innerHTML = "";
            }
        }
        console.log("查找......");
    }

    function deleteStorage(){
    //删数据
        var targetObj = getElObj("jsonName").value;
        if(isEmptyObj(targetObj)){
            return ;
        }else{
            window.localStorage.removeItem(targetObj);
            getElObj("storageInfo").innerHTML = "删除成功";
        }
        console.log("删除......");
    }

    function findQuestInfo(questionIPort, saveId){
    //接口调用
        $.ajax({
            url: questionIPort+saveId,
            dataType: "json",
            type: "get",
            beforeSend: function() {
    //请求前

            },
            success: function(response) {
    //请求成功
                if(response.code == 200){
                    saveStorage("questStorage"+saveId,response.data);
                }else{
                    saveStorage("questStorage"+saveId,"");
                }
            },
            complete: function() {
    //请求完成

            },
            error: function() {
    //请求出错
                saveStorage("questStorage"+saveId,"");
            }
        });
    }

    //查询保存数据 
    findQuestInfo(questionIPort, "118"); //单选题
    findQuestInfo(questionIPort, "181"); //多选题
    findQuestInfo(questionIPort, "135"); //填空题
    findQuestInfo(questionIPort, "182"); //主观题
    findQuestInfo(questionIPort, "166"); //数字记忆
    findQuestInfo(questionIPort, "167"); //词语记忆
    /*setTimeout(function(){
        removeStorageByCount(2);
    },3000);*/
    
 </script>
 </body>
</html>

 

转载于:https://www.cnblogs.com/mbsh/p/5163284.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109155.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webapp开发框架[通俗易懂]

    webapp开发框架[通俗易懂]前言快速增长的APP应用软件市场,以及智能手机的普及,手机应用:Native(原生)APP快速占领了APP市场,成为了APP开发的主流,但其平台的不通用性,开发成本高,多版本开发等问题,一直困扰着专业APP开发企业,和APP服务提供商。安卓和IOS的操作方式,开发模式,界面UI显示方面的差别,也使得原生APP的不同版本体验有很大的区别,光是做兼容性调测,都要花费开发企业不少的时间。近年来,另一种应用形态——基于HTML5技术的WebApp也如雨后春笋般出现,于是关于原生APP与HTML5APP

    2022年4月19日
    102
  • idea20.3.1激活码-激活码分享2022.02.17[通俗易懂]

    (idea20.3.1激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    289
  • dual channel ddr3主板_ddr3 std

    dual channel ddr3主板_ddr3 std第一次看到ODT这个东西,真是一头雾水;然后是TerminationRank,FAE解释了几次,也没明白。究其原因,这玩意儿和硬件太相关,而不是纯粹软件的TRUEorFALSE。好歹也是通信工程毕业,号称软硬通吃,怎能被轻易难倒?ODT,全称OnDieTermination。我们先说Termination的概念。一个DDR通道,通常会挂接多个Rank,这些Rank的数

    2025年10月15日
    3
  • MySQL casting from decimal to string(mysql decimal 转 varchar)

    MySQL casting from decimal to string(mysql decimal 转 varchar)今天群里一个哥们问我mysql怎么将decimal转成varchar,经过查阅资料发现,mysql好像不能将decimal直接转换成varchar,但是可以转成char,原文链接:http://stackoverflow.com/questions/5114959/mysql-casting-from-decimal-to-string类似于这样的:SELECTCAST(SUM(de

    2022年7月20日
    29
  • 可变长子网掩码划分例题_最小生成树是什么

    可变长子网掩码划分例题_最小生成树是什么北极的某区域共有 n 座村庄,每座村庄的坐标用一对整数 (x,y) 表示。为了加强联系,决定在村庄之间建立通讯网络,使每两座村庄之间都可以直接或间接通讯。通讯工具可以是无线电收发机,也可以是卫星设备。无线电收发机有多种不同型号,不同型号的无线电收发机有一个不同的参数 d,两座村庄之间的距离如果不超过 d,就可以用该型号的无线电收发机直接通讯,d 值越大的型号价格越贵。现在要先选择某一种型号的无线电收发机,然后统一给所有村庄配备,数量不限,但型号都是 相同的。配备卫星设备的两座村庄无论相距多远都可以直

    2022年8月9日
    5
  • Entity Framework

    Entity Framework

    2021年7月7日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号