一、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 () )事件,返回保存的結果。