這裡有幾點。 我們用asp.net開發資料庫應用時。時常要建立一些實體如
public class UserEntity
...{
public string UserName
...{
get...{
return "";}
}
public string UserEmail
...{
get...{
return "" ;}
}
}
下面要講的是如何使用指令碼來類比這種實體
首先 要講解概念 要返還類似這種實體指令碼可以這麼寫
UserEntity=function()
...{
return ...{"UserName":"shenyi","UserEmail":"shenyi@csdn.net"}
}
這樣我們在 指令碼中只要寫
var scriptEntity=new UserEntity();
scriptEntity.UserName;
scriptEntity.UserEmail;
就可以引用到,好 指令碼實體構建好了。接下來我們要從伺服器取資料如下
建立一個aspx頁面 假如叫 getData.aspx 在代碼裡寫
public void Page_load()
...{
int userid=int.parse(Request.QueryString["uid"].ToString());
string sql="select * from Users where userid="+userid.ToString();
using(DataTable dt=SqlHelper.ExecuteDataSet(sql).Tables[0]) //SqlHelper 不要告訴我 不知道是什麼
...{
// 這裡構建一個 字元 令 一個 指令碼變數 等於 {"UserName":dt.rows[0]["username].......}
//如 Response.Write("userReturnValue={.......//這裡自己拼接}");
Response.End();
}
}
以下是如何把指令碼和這個 aspx頁面建立聯絡 如下直接是代碼
var UserReturnValue="" //這個很重要一定要定義 因為在服務端要對其賦值
ComJS=function()
...{
this.GetEntitying=function(uid,callback)
...{
var scriptObj=document.createElement("script");
scriptObj.type="text/javascript";
scriptObj.src="getData.aspx?uid="+uid
document.getElementsByTagName("head")[0].appendChild(scriptObj);
scriptObj.onreadystatechange=function()
...{
if(scriptObj.readyState=="loaded")
...{
callback.EndGetEntity(UserReturnValue);
}
}
}
}
這裡使用 callback回調 是最重要的一步 當指令碼載入完畢後才會對UserReturnValue 進行賦值 因此我們不能直接獲得這個實體.
上面指令碼寫完後 我們在頁面要開始獲得這個 實體
var cjs=new ComJS(); //初始化我們的指令碼對象
function BeginGetEntity()
...{
this.EndGetEntity=function(entityDataList)
...{
//entityDataList 這個就是最終的實體物件 你可以直接 用 entityDataList.UserName 或者 entityDataList.表裡欄位名
//來擷取這個實體的對象
// 注意 業務操作 要在這個 函數內執行。因為這是一個回調。也就是當服務端把資料取到了 這邊才開始執行
嚴格來說就是非同步擷取資料。類似Ajax 但是不使用 xmlhttp對象
}
}
var bge=new BeginGetEntity();
cjs.GetEntity("3",bgelist); //這裡的3代表我要取使用者id等於3的 資料
好/ 整個用指令碼構建實體的方法寫好 希望對大家尤其是初學者 會有點用。其實在指令碼中要實現ajax不光只有xmlhttp可以實現 很普通的指令碼也能實現
請關注我的個人官網: www.shenyisyn.org