1.ajax,是Asynchronous JavaScript and XML 的簡寫,即非同步JavaScript 和XML,是一種綜合使用javascript、dom、Xml、CSS等技術實現非同步傳輸資料的技術。
2.使用ajax技術,在介面上可以做到不重新整理頁面實現與後台互動,更重要的是“非同步”,減輕了伺服器負擔,減少了客戶的等待時間。
3.ajax,可以理解為一種多線程技術。
4.當傳輸的資料量不大,並且不考慮xml統一項目介面時,可以不必返回xml。
下面看一個例子(.net):
要實現的效果:在DropDownList裡選中某個人名,後台根據選項到資料庫裡尋找該人的Email,然後在TextBox裡顯示出來。
從 www.schwarz-interactive.de下載最Ajax檔案。
添加引用AjaxPro.2.dll (.net 2.0)。
在web.config中加入幾行:<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
[]
</system.web>
</configuration>
在.net代碼中註冊ajax方法: public class _Default
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
[AjaxPro.AjaxMethod]
public string GetEmail(string name)
{
}
}
這裡注意typeof(_Default)與上面的class _Default類名一致。
當用戶端向伺服器發出尋找Email請求時,這裡用public string GetEmail(string name)方法回應,用name去尋找返回結果Email。(這裡省略其過程代碼)
注意如果有多個Ajax方法,必須在每個方法前面都加上一句[AjaxPro.AjaxMethod]。
伺服器端這完成了,下面看用戶端。
在指令碼裡寫兩個function,如下:<script language="javascript" type="text/javascript">
function GetEmail()
{
var name= document.getElementById("DropDownList1").value;
_Default.GetEmail(name,GetEmail_callback);
}
function GetEmail_callback(res)
{
document.getElementById("email").value=res.value;
}
</script>
第一個函數即是觸發事件時調用的函數,意思是:先得到Id為"DropDownList1"的元素的值,然後調用類_Default裡註冊的ajax方法GetEmail(),name是public string GetEmail(string name)所需要的參數,而GetEmail_callback則是用戶端回調的方法——伺服器端得到結果時通過這個方法將結果返回到用戶端。第二個函數GetEmail_callback(res)即是:當伺服器端得到結果調用此函數時,將Id為"email"的元素的值設為返回結果res的值。
注意:
1.假如GetEmail()沒有參數時,在括弧裡面就唯寫回呼函數:_Default.GetEmail(GetEmail_callback);
2.回呼函數不必是"原函數_callback"的格式寫,這樣寫只是為了便於區分。
最後使用,在DropDownLost1裡寫上個onchange事件,調用GetEmail()函數。 <asp:DropDownList ID="DropDownList1" runat="server" onchange="GetEmail()"></asp:DropDownList>
<asp:TextBox ID="email" runat="server"></asp:TextBox>
簡單的例子便做好了。
PS:這個東東主要是我找啥東西叫_callback的時候順帶找到的,覺得說的還算是清楚,就轉上來了~
原帖地址:http://www.cnblogs.com/jeffamy/archive/2006/04/23/382927.html