本地存儲(localStorage、sessionStorage、web Database)


    一、sessionStorage和localStorage

      sessionStorage和localStorage兩種方法都是當用戶在inPut文本框中輸入內容並點擊保存數據按鈕時保存數據,點擊讀取數據按鈕時讀取保存后的數據。不過使用sessionStorage時,只能局限於當前頁面,如果關閉瀏覽器,數據就會丟失,下次打開瀏覽器就會讀不到數據。如果使用localStorage時,即使瀏覽器關閉,下次打開瀏覽器仍能讀取到上次被保存的數據。但是數據的保存時按不同瀏覽器分別進行的,也就是說,如果打開別的數據,就會讀取不到在這個瀏覽器中保存的數據。

    1.設置數據

         localStorage.setItem(key,value);

         sessionStorage.setItem(key,value);

   2.讀取數據

        localStorage.getItem(key);

        sessionStorage.getItem(key);

  3.刪除數據

        localStorage.removeItem(key);

        sessionStorage.removeItem(key);

二、web Database

       SQLLite的文件型SQL數據庫能將用戶輸入的數據保存到客戶端的本地數據庫中;

     1.新建數據庫

      var db=openDatabase('mydb','1.0','Test DB',2*1024*1024);

       第一個參數為數據庫名,第二個參數為版本號,第三個參數為數據庫名,第四個為數據庫的大小;

    2.操作數據庫executeSql方法

        transaction.executeSql(sqlquery,[],dataHandler,errorHandler);

       第一個參數為需要執行的SQL語句,第二個參數為SQL語句中所有使用的參數的數組,第三個為執行SQL語句成功時調用的回調函數,第四個參數為SQL語句失敗時調用的毀掉函數。

      2.1添加數據

       tx.executeSql('INSERT INTO myTable VALUES(?,?,?)',[value1,value2,value3],function(tx,rs),function(tx,error));

     2.2修改數據

       tx.executeSql('update myTable set field1=?,field2=?,field3=? where field4=?' [value1,value2,value3,value4],function(tx,rs),function(tx,error));

     2.3刪除數據

      tx.executeSql('delete from myTable where field1=?' [value1],function(tx,rs),function(tx,error));

    2.4創建數據

      tx.executeSql('CREATE TABLE IF NOT EXISTS  myTable(field1 TEXT,field2 TEXT)' ,[]);

 三、將本地數據庫中的數據提交到服務器端

    

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script type="text/javascript">
      $(function () {
         <% if(postFlag){%>
         alert("dddd");
         <%}%>
      });

      function btnSubmit_onclick() {
          $("#JsonText").val("ddddddddddddddddddddddddddddddddddddddddddssss");
          form1.submit();
      }

  </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <input  type="button" id="btnSubmit" onclick="btnSubmit_onclick();" value="提交"/>
       <input type="hidden" id="JsonText" name="JsonText" />
    </div>
    </form>
</body>
</html>

 點擊"提交"按鈕,就將本地數據中的的數據提交到服務端(這里前端提交按鈕觸發的事件本是組裝本地數據庫中內容,然后通過input標簽保存該字符串,傳到后台,供服務器端調用,這里簡寫呢)

[DataContract]
    public class Data
    {
        [DataMember]
        public string Code { get; set; }
    }

    public bool postFlag = false;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            postFlag = true;
            string str = Request.Form["JsonText"].ToString();
            byte[] buffer = Encoding.UTF8.GetBytes(str);
            DataContractSerializer serializerArray = new DataContractSerializer(typeof(ArrayList));
            DataContractSerializer serializer = new DataContractSerializer(typeof(Data));
            using (MemoryStream stream = new MemoryStream(buffer))
            {
                ArrayList dataArray = serializerArray.ReadObject(stream) as ArrayList;
                for (int i = 0; i < dataArray.Count; i++)
                {
                    str = dataArray[i].ToString();
                    buffer = Encoding.UTF8.GetBytes(str);
                    using (MemoryStream stream1 = new MemoryStream(buffer))
                    {
                        Data myData = serializer.ReadObject(stream1) as Data;
                    }
                }
            }
        }
    }

 上面就是將input保存的數據進行解析,然后保存至數據庫中,這里我寫了一部分,后面存入數據庫中未完成。

 這部操作完了,就會觸發前端的$(function () )事件,返回保存的結果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM