.ashx(泛型處理常式)
此範例中,有引用System.Web.SessionState與實作IReadOnlySessionState,才能在程式碼裡面讀到Session。ashx:
<%@ WebHandler Language="C#" Class="TestUserInfo" %>
using System;
using System.Web;
using System.Web.SessionState;
public class TestUserInfo : IHttpHandler, IReadOnlySessionState
{
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string sUserName = context.Request.Form["UserName"];
string sUserID = context.Session["UserID"].ToString();
string sUserInfo = string.Format("{0} {1}", sUserID, sUserName);
context.Response.Write(sUserInfo);
}
public bool IsReusable {
get { return false; }
}
}
Javascript:$(document).ready(function() {
$('#txtName').change(function() {
var UserName = $(this).val();
$.ajax({
type: 'post',
url: "TestUserInfo.ashx",
data: 'UserName=' + UserName,
success: function(userInfo) {
$('#txtResult')[0].value = userInfo;
},
error: function() { alert('ajax failed'); }
})
});
});
.aspx(一般網頁頁面)
aspx:只保留第一行<%@ Page... %>就好<%@ Page Language="C#" ... %>aspx.cs:
using System;
public partial class TestUserInfo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string sUserName = Request.Form["UserName"];
string sUserID = Session["UserID"].ToString();
string sUserInfo = string.Format("{0} {1}", UserID, UserName);
Response.Write(sUserInfo);
}
}
Javascript:$(document).ready(function() {
$('#txtName').change(function() {
var UserName = $(this).val();
$.ajax({
type: 'post',
url: "TestUserInfo.aspx",
data: 'UserName=' + UserName,
success: function(userInfo) {
$('#txtResult')[0].value = userInfo;
},
error: function() { alert('ajax failed'); }
})
});
});
.asmx(Web Service)
[System.Web.Script.Services.ScriptService]要取消註解。method上頭加上[WebMethod(EnableSession=true)],才能使用Session。
asmx:
using System.Web.Services;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//下面這行取消註解。
[System.Web.Script.Services.ScriptService]
public class TestUserInfo : System.Web.Services.WebService
{
public TestUserInfo () {
//如果使用設計的元件,請取消註解下行程式碼
//InitializeComponent();
}
[WebMethod(EnableSession=true)]
public string GetUserInfo(string UserName)
{
string sUserID = Session["UserID"].ToString();
string sUserInfo = string.Format("{0} {1}", UserID, UserName);
return sUserInfo;
}
}
Javascript:要注意的是,雖然return的是string,但是Javascript實際接到的是xml格式的字串。
$(document).ready(function() {
$('#txtName').change(function() {
var UserName = $(this).val();
$.ajax({
type: 'post',
url: "TestUserInfo.asmx/GetUserInfo",
data: 'UserName=' + UserName,
success: function(oXml) {
var xmlDoc = oXml;
var userInfo = xmlDoc.childNodes(1).firstChild.nodeValue;
$('#txtResult')[0].value = userInfo;
},
error: function() { alert('ajax failed'); }
})
});
});
參考來源:In 91
沒有留言:
張貼留言