第壹種方法$.Post(url,data,callback, type);
首先新建壹個html頁,頁面布局和上壹節的差不多
代碼如下:
如圖:
然後在
姓名:
密碼:
登錄" onclick="SayHelloJquery()" />
取消" />
節點中加入下代碼:
function SayHelloJquery() {
var name = $("#txtname1").val();//獲取登錄者姓名
$.post("SayHello.ashx", { Name: name },
function (data, textStatus) {
if (textStatus == "success") {
alert(data);
}
});
//在這裏用的是JQuery的post方法來實現AJAX效果的。
該Post方法有三個參數:
第壹參數:發送請求的URL,本例為“SayHello.ashx",
第二參數:傳遞的參數data,這裏的參數形式是鍵值對的形式表現:{key:value,key:value},本例中為傳遞登錄者姓名:{Name:name},
第三個參數為壹個匿名的回調函數該函數有兩個參數(data,textStatus),參數都是固定的,第壹個參數為data,即在SayHello.ashx頁處理後返回的結果,第二個為狀態表示,當Response?的返回狀態是"success"時才調用該方法。
第四個參數為type,這個參數是可選參數,可以為空,也可為客戶端的請求類型JSON、XML等。(因為是可選參數,這裏就沒有選)
然後再構建壹個壹般程序處理頁,SayHello.ashx
代碼如下:
public void ProcessRequest(HttpContext context)
{
var name = context.Request["Name"].ToString();//獲取傳入的的參數,本示例中,也就是登陸姓名
context.Response.Write("Hello !"+name);//這裏就模擬直接登錄成功,返回“Hello”+登錄姓名
}
輸入用戶名、密碼,點擊登錄:
結果:
第二種方法$.Get(ulr,data,callback);
頁面布局和第壹種方法的布局相同,
同時壹般應用程序處理頁也和上邊的壹樣。
主要不同的是在
節點中
SayHelloJQuery()函數裏代碼如下:
{
var name = $("#txtname1").val();
//JQuery的Get方法有三個參數,分別是第壹個url,第二個data,第三個回調函數callback這點和Post方法是壹樣的。
$.get("SayHello.ashx", { Name: name },
function (data, textStatus) {
if (textStatus == "success") {
alert(data);
}
});
輸入用戶名密碼、點擊登陸後結果如下:
第三個方法$.Ajax();該方法是Query?的底層?AJAX?實現。簡單易用的高層實現見?$.get, $.post?等,這兩個方法在上邊都有介紹,這裏就不再講了,主要講$.Ajax()的實現。
$.ajax()?只有壹個參數:參數?key/value?對象,包含各配置及回調函數信息如下表:
參數名
類型
描述
url
String
(默認:?當前頁地址)?發送請求的地址。
type
String
(默認: "GET")?請求方式?("POST"?或?"GET")
timeout
Number
設置請求超時時間(毫秒)。此設置將覆蓋全局設置。
async
Boolean
(默認: true)?默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為?false。
beforeSend
Function
發送請求前可修改?XMLHttpRequest?對象的函數,如添加自定義?HTTP頭。XMLHttpRequest?對象是唯壹的參數。?function (XMLHttpRequest) {}
cache
Boolean
(默認: true) jQuery 1.2?新功能,設置為?false?將不會從瀏覽器緩存中加載請求信息。
complete
Function
請求完成後回調函數,參數:?XMLHttpRequest?對象,成功信息字符串。function (XMLHttpRequest, textStatus) {}
contentType
String
(默認: "application/x-www-form-urlencoded")?發送信息至服務器時內容編碼類型,該值適合大多數應用場合。
data
Object, String
發送到服務器的數據。將自動轉換為請求字符串格式。GET?請求中將附加在URL?後。查看?processData?選項說明以禁止此自動轉換。必須為?Key/Value?格式。如果為數組,jQuery?將自動為不同值對應同壹個名稱。如?{foo:["bar1", "bar2"]}?轉換為?'&foo=bar1&foo=bar2'。
dataType
String
預期服務器返回的數據類型。如果不指定,jQuery?將自動根據?HTTP?包MIME?信息返回?responseXML?或?responseText,並作為回調函數參數傳遞,可用值:
"xml":?返回?XML?文檔,可用?jQuery?處理。
"html":?返回純文本?HTML?信息;包含?script?元素。
"script":?返回純文本?JavaScript?代碼。不會自動緩存結果。
"json":?返回?JSON?數據。
"jsonp":?JSONP?格式。使用?JSONP?形式調用函數時,如?"myurl?callback=?" jQuery?將自動替換為正確的函數名,以執行回調函數。
error
Function
(默認:?自動判斷?(xml?或?html))?請求失敗時將調用此方法。這個方法有三個參數:XMLHttpRequest?對象,錯誤信息,(可能)捕獲的錯誤對象。function (XMLHttpRequest, textStatus, errorThrown) {}
global
Boolean
(默認: true)?是否觸發全局?AJAX?事件。設置為?false?將不會觸發全局?AJAX事件,如?ajaxStart?或?ajaxStop?。可用於控制不同的Ajax事件
ifModified
Boolean
(默認: false)?僅在服務器數據改變時獲取新數據。使用?HTTP?包?Last-Modified頭信息判斷。
processData
Boolean
(默認: true)?默認情況下,發送的數據將被轉換為對象以配合默認內容類型"application/x-www-form-urlencoded"。如果要發送?DOM?樹信息或其它不希望轉換的信息,請設置為?false。
success
Function
請求成功後回調函數。這個方法有兩個參數:服務器返回數據,返回狀態function (data, textStatus) {}
下邊通過壹個小例子進行演示:
還是用上邊的登錄示例:只在
裏將SayHelloJQuery()函數裏代碼修改如下:
function SayHelloJQueryAjax() {
var name = $("#txtname1").val();
alert(name);
//上邊是$.Ajax()的參數列表,在這個示例中,我僅僅是采用了幾個別的參數,並沒有把所有的參數都使用,這裏主要使用了url、data、success、complete這幾個參數。
$.ajax({ url: "SayHello.ashx",data:{Name:name},success: function (data, textStatus) { if (textStatus == "success") { alert(data); } }, complete: function (XMLHttpRequest, textStatus) { if (textStatus == "success") { alert("JQuery.Ajax()測試成功!"); } } });
}
輸入用戶姓名密碼,點擊登陸:結果如下:
第壹步:出現如下結果
模擬用戶登陸,訪問SayHello.ashx頁,進行模擬用戶驗證,這裏默認為驗證成功,返回hello+用戶名
第二步:然後又調用了$.Ajax()中的complete的函數。這個函數方法僅返回了”JQuery.Ajax()測試成功!"這樣的壹句話。
好了這壹節到這裏也基本上就結束了,這壹節裏我主要介紹了用JQuery實現AJAX的三種方法,其中$.Ajax()為JQuery的底層實現方法,$.Get()和?$.Post()為JQuery的高級方法。
下壹節的話我會將AJAX與JSON進行結合,講壹些關於從後臺讀取數據,然後在前臺進行顯示的相關內容。希望可以給大家帶來幫助,也希望大家多多指點!