一、禁用Cookie
禁用cookie
<sessionState cookieless=”true”>
</sessionState>
在webconfig中禁用了cookie,session还可以使用,sessionId通过url传递。
如果在浏览器中禁用cookie,这时session每次都是新建,相当于一个新的对话
二、ASP.NET中的重要对象
Application对象可以存储应用程序级的数据。
第一个用户访问站点时,应用程序启动,并创建一个Application对象,创建成功后,整个应用程序都可以使用。
三、AJAX编程技术
Asynchronous JavaScript and XML
中文:异步JavaScript和XML
指一种创建交互式网页应用的网页开发技术。
不是指一种单一的技术,而是有机地利用了一系列相关的技术
AJAX本质是浏览器技术,主要目的局部交换客户端及服务端间的数据
四、JavaScript实现AJAX
$(function () {
$("#btnGetDate").click(function () {
var xhr;
//1、创建异步请求的核心对象
if (XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
//2、设置请求对象跟后台哪个页面交互
xhr.open("Get", "ProcessAjax.ashx?p=33", true);
//3、发送请求
xhr.send();
//4、后台返回数据后会调用此方法
xhr.onreadystatechange = function () {
//“4”表示前台已经接受了后台的响应报文
if (xhr.readyState == 4) {
alert(xhr.responseText);
}
};
})
});
其中
异步对象的readyState属性指出了XMLHttpRequest对象在发送/接收数据过程中所处的几个状态。XMLHttpRequest对象会经历5种不同的状态:
0:未初始化,new完后。
1:已打开。对象已经创建并初始化,但还未调用send方法
2:已发送。已调用send方法,但该对象正在等待状态码和头的返回
3:正在接收。已经接收了部分数据,但还不能使用该对象的属性和方法,因为对象的状态和响应头不完整。
4:已加载。所有数据接收完毕
五、两种Json格式的序列化方法
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
List<CityInfo> cities = new List<CityInfo>()
{
new CityInfo(){CityId = 1,CityName = "潍坊"},
new CityInfo(){CityId = 2,CityName = "青岛"},
new CityInfo(){CityId = 3,CityName = "济南"},
new CityInfo(){CityId = 4,CityName = "东营"},
new CityInfo(){CityId = 5,CityName = "烟台"}
};
//第一种方式:拼接Json字符串
//StringBuilder sb = new StringBuilder();
//sb.Append("[");
//foreach (var cityInfo in cities)
//{
// sb.Append("{");//"{"大概是特殊字符
// sb.AppendFormat("\"CityId\":\"{0}\",\"CityName\":\"{1}\"",cityInfo.CityId,cityInfo.CityName);
// sb.Append("},");
//}
//string str = sb.ToString().TrimEnd(',');
//str += "]";
//context.Response.Write(str);
//--------------------------------------------------------------------------
//第二种方式:将对象序列化为Json格式
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string json = javaScriptSerializer.Serialize(cities);
context.Response.Write(json);
}
第二种方法要添加引用Extensions程序集
第二种序列化的方式:如果对象之间有循环依赖,则会出现问题。
六、Jquery中实现ajax的五种方法:
<head>
<title></title>
<script src="../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#btnGetJson").click(function () {
$.getJSON("ResponseJson.ashx", "a=3&b=4", function (data) {
alert(data[1].CityName);
});
});
$("#btnJQGet").click(function () {
$.get("ResponseJson.ashx", "dd=33", function (data) {
alert(data);
});
});
$("#btnJQPost").click(function () {
$.post("ResponseJson.ashx", { d: 33, demo: "shit" }, function (data) {
alert(data[0].CityName);
}, "json");
});
$("#btnAjax").click(function () {
$.ajax({
url: "ResponseJson.ashx",
data: "a=3&b=4",
type: "Post",
success: function (data) {
alert(data);
},
error: function () {
alert("错误!");
}
});
});
$("#btnLoad").click(function () {
$("#divDemo").load("ResponseJson.ashx", { id: 333 }, function (data) {
alert(data);
});
});
});
</script>
</head>
<body>
<input type="button" value="JQ GetJson" id="btnGetJson" />
<input type="button" value="JQ Get" id="btnJQGet" />
<input type="button" value="JQ Post" id="btnJQPost" />
<input type="button" value="JQ ajax" id="btnAjax" />
<input type="button" value="JQ load" id="btnLoad" />
<div id="divDemo"></div>
</body>
小知识点:
HttpModule是HttpApplication实例在Init()方法中初始化绑定的事件