Jquery 之Ajax方法$.get() 的運(yùn)用,擴(kuò)展鏈接模型的天地如前文說(shuō)道的那個(gè)表現(xiàn)層和業(yè)務(wù)層的鏈接模型,從上篇博文(http://www.cnblogs.com/AflutterFeather/archive/2010/01/07/1641315.html)中可以看到:我們通過(guò)WebService提供的方法來(lái)獲取服務(wù)端的返回值。 如果不采用WebService,有其他的方法來(lái)同服務(wù)端代碼進(jìn)行交互嗎? 經(jīng)過(guò)研究,終于實(shí)驗(yàn)通過(guò),現(xiàn)在就$.get()方法來(lái)進(jìn)行講解。 $.get(url [,data] [,callback] [,type]) -- 方法的完整定義 第一:從服務(wù)端獲取字符串 第二:根據(jù)傳入的參數(shù),自動(dòng)執(zhí)行服務(wù)端的不同方法,返回字符串 第三:從服務(wù)端獲取Json格式的數(shù)據(jù) 環(huán)境: 靜態(tài)頁(yè)面:get1.htm 服務(wù)端頁(yè)面: get1.aspx 服務(wù)端返回Json格式的組件:System.Web.Extensions.dll 1) get1.htm代碼(暫時(shí)不含js代碼)
運(yùn)行頁(yè)面》》》
![]() ![]() <form id="form1" action="#">
<p>評(píng)論:</p> <p>姓名:<input id="username" name="username" type="text" /></p> <p>內(nèi)容:<textarea id="content" name="content" cols="20" rows="2"></textarea></p> <p> <input id="send" type="button" value="提交" /></p> </form> <div>已有評(píng)論:</div> <div id="resText" class="highlight"> </div>
2)get1.htm代碼(js代碼)
![]() ![]() $(function(){
$("#send").click(function(){ $.get("get1.aspx", { username : $("#username").val() , content : $("#content").val() }, function (data, textStatus){ if(textStatus) { $("#resText").html(data); }//if }//function (data, textStatus );//$.get }) })
3)JS代碼說(shuō)明: $("#username").val() { username : textStatus -- 返回的狀態(tài)值,bool類型的值 4)get1.aspx代碼說(shuō)明 只有一行代碼 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="get1.aspx.cs" Inherits="get1" %>
5)get1.cs 代碼說(shuō)明
![]() ![]() protected void Page_Load(object sender, EventArgs e)
{ string k1 = ""; string k2 = ""; if (Request.QueryString["username"] != null) { k1 = Request.QueryString["username"].ToString(); } if (Request.QueryString["content"] != null) { k2 = Request.QueryString["content"].ToString(); } Response.Write(GetInfo1(k1, k2)); } private string GetInfo1(string username, string content) { return "I>>"+username + ">>" + content; } 總結(jié):當(dāng)點(diǎn)擊get1.htm的提交按鈕的時(shí)候,將值傳入服務(wù)端get1.aspx,經(jīng)過(guò)處理后,通過(guò)回寫出字符串。
進(jìn)行擴(kuò)展思維--------------------》 擴(kuò)展1 不通過(guò)webservice,我們就可以與服務(wù)端進(jìn)行交互,這個(gè)時(shí)候我們讓其根據(jù)傳入的參數(shù)類型來(lái)執(zhí)行不同的方法,這樣我們就可以把很多方法都寫在一個(gè)集中的頁(yè)面里面(Facade模式),以便于集中管理 $.get("../get1.aspx?type=1", .cs代碼的變化
![]() ![]() protected void Page_Load(object sender, EventArgs e)
{ string k1 = ""; string k2 = ""; string strType = ""; if (Request.QueryString["username"] != null) { k1 = Request.QueryString["username"].ToString(); } if (Request.QueryString["content"] != null) { k2 = Request.QueryString["content"].ToString(); } if (Request.QueryString["type"] != null) { strType = Request.QueryString["type"].ToString(); } if (strType == "1") { Response.Write(GetInfo1(k1, k2)); } else if (strType == "2") { Response.Write(GetInfo2(k1, k2)); } } private string GetInfo1(string username, string content) { return "I>>"+username + ">>" + content; } private string GetInfo2(string username, string content) { return "II>"+username + ">>" + content; }
擴(kuò)展2 以上都是返回一個(gè)字符串,在cs頁(yè)面調(diào)用Response.write方法進(jìn)行寫入。這對(duì)于單個(gè)返回值是沒(méi)有問(wèn)題的,但如果我們要返回一個(gè)對(duì)象的值?總不能采用這種方法,用分隔符組合在一起,然后又拆開(kāi),這樣就太麻煩了,這個(gè)時(shí)候就要用到Json格式。
![]() ![]() $.get("../get1.aspx?type=3",
{ username : $("#username").val() , content : $("#content").val() }, function (data, textStatus){ var data1 = ("(" + data + ")"); if(textStatus){ var username = data1.username; var content = data1.content; var txtHtml = "Json>>" + username + "|" + content; $("#resText").html(txtHtml); } else { alert("error"); } }, "JSON");
注意:"JSON" 一定要寫成大寫,否則調(diào)用沒(méi)反映 方法一定要加上,否則也不會(huì)顯示出值來(lái)(我的理解是:使用這個(gè)方法后,data被整理成了對(duì)象,在data1.username的時(shí)候才會(huì)顯示出來(lái)),這點(diǎn)我有點(diǎn)不太明白,還需進(jìn)行試驗(yàn)才行,不過(guò)至少用這種方式可以獲取一個(gè)對(duì)象的值。
cs代碼關(guān)于JSon
![]() ![]() private string GetInfo_Json(string username, string content)
{ UserInfo objUserInfo = new UserInfo(); objUserInfo.username = username; objUserInfo.content = content; return new JavaScriptSerializer().Serialize(objUserInfo); ; }
注:采用JSON格式的時(shí)候,get1.aspx值允許一行代碼,如果有其他的代碼,無(wú)法返回值,關(guān)于這一點(diǎn)大家可以去嘗試一下,其實(shí)很簡(jiǎn)單,只需要在get1.aspx里面加入html代碼即可 比如: <html> </html> 總結(jié): 經(jīng)過(guò)以上的敘說(shuō),我們可以知道了這種鏈接模型也可以在不使用WebService情況下進(jìn)行使用,這樣這種模型的天地,我覺(jué)得打開(kāi)了,完全可以做為一種獨(dú)立的模型去開(kāi)發(fā),真正得做到完全與服務(wù)器語(yǔ)言獨(dú)立,當(dāng)然我們還面臨很多要解決的困難,在接下來(lái)的博文中會(huì)陸續(xù)去解決。 |
|