jquery實現ajax可以調用幾種方法
我經常用的是$get(url,data,callback,type)方法
其中url是非同步請求的頁面(可以是.ashx檔案),data是參數,callback是回呼函數,而type是返回資料的類型.type有xml,html,json,text等.
首先,頁面引用jquery.js
在頁面寫ajax處理的js函數
function initMeeting() { $.get("/Common/MeetingRoom.ashx", {meetid:<%=meetId %>},function sellerList(data){ $("#divSellerList").html(data); },"json"); setTimeout("initMeeting()",20000); } function initMeeting() { $.get("/Common/MeetingRoom.ashx", {meetid:<%=meetId %>},function sellerList(data){ var obj = eval( "(" + data + ")" );//轉換後的JSON對象 $("#divSellerList").html(obj.CellerList); },"html"); setTimeout("initMeeting()",20000); }
我用的傳回型別是json,這樣可以返回類似類的資料類型.比如{"Name":"Sunny D.D", "Age":25}
但是在使用傳回值data時,首先要轉換json,通過
var obj = eval( "(" + data + ")" );//轉換後的JSON對象
就能獲得json對象.
json對象是在MeetingRoom.ashx檔案裡處理產生的
部分代碼如下:
public class MeetingRoom : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; try { int meetid = XYConvert.GetInt32(context.Request.QueryString["meetid"]); string str = ""; MeetingJson meetingJson = new MeetingJson(); if (meetid != 0) { meetingJson.CellerList=returnCellerList(meetid); } str = JsonConvert.SerializeObject(meetingJson); context.Response.Write(str); } catch (Exception ex) { context.Response.Write(ex.Message); } } public class MeetingJson { string cellerList; public string CellerList { get { return cellerList; } set { cellerList = value; } } } protected string returnCellerList(int meetid) { //省略.. } }
返回json資料格式最重要的是使用了JsonConvert.SerializeObject()方法.它可以將需要傳遞到用戶端的資料打包,並序列化為字串
而類JsonConvert在第三方dll檔案中(Newtonsoft.Json.dll),引入dll就可以使用了.
注意:在.ashx頁面中,想要使用Session的話,直接寫context.Session["user"]是不行的,必須指定當前上下文可以使用Session,可已實現IRequiresSessionState介面,訪問Session
public class MeetingRoom : IHttpHandler, IRequiresSessionState {
在中小項目中,使用這種方式實現ajax,如果是大項目裡,應該有封裝更好的ajax架構