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