Ajax.Request()筆記

首次接觸web前端,遇到一些技術問題,隨手記錄下來。
Ajax( Asynchronous JavaScript and XML),異步的 JavaScript 和 XML。Ajax是利用javascript語言,在不重新加載整個頁面的情況下,與服務器交換數據並更新部分內容的方法,核心思想是採用異步請求的方式與服務器交換數據。XMLHttpRequest對象是Ajax的基礎。
Javascript有許多庫都封裝實現了Ajax方法。Ajax.Request()便是Prototype.js庫(貌似這個庫已經比較老,資料也比較少,很多文章都是07、08年的)的一個Ajax請求類。
Ajax.Request(
url,
{
method:method,
parameters:para,
postBody:xmlString,
asynchronous:true,
setRequestHeader:Object,
onComplete:completeFun,
onError:errorFun
}
}
參數
url
必選項。數據發送的目標地址。
method
可選項。數據提交的方式,默認值爲get。常用的還有post。
parameters
當 method 爲 get 時是可選項,爲 post 時是必選項。參數構造形式爲{key1:value,key2:value2, .......}。發送的數據,其形式爲: name1=valeu1& name2=value2&name3=value3......
postBody
可選項。客戶端發送的 xml 格式字符串。如果啓用 postBody,那麼 parameters 將被忽略。
asynchronous
可選項。指定請求是否異步,默認爲true(異步)。
setRequestHeader
指定請求的頭部字串。其值類型爲“名稱值對”形式的對象,比如:{"If-Modified-Since":"0", "SOAPAction":"http://tempuri.org/SBS_WebService", ... ... }
onComplete
可選項。請求成功時執行的回調函數,該函數默認把當前使用 xmlhttp 對象作爲第一個參數。
onError
可選項。請求異常時執行的回調函數,該函數默認把當前使用 xmlhttp 對象作爲第一個參數。
返回值
當前使用的 xmlhttp 對象。
描述
發送異步請求,並返回 xmlhttp 對象,該對象內置有 abort() 方法,用於提前終止請求。異步請求成功則執行 onComplete,失敗則執行 onError 。並返回 xmlhttp 對象。

Prototype 的 AJAX 對象定義了完整的回調系列,它們按照下述的順序被觸發:
1、onCreate(實際上這是被 AJAX 全局響應器 保留的回調)。
2、onUninitialized(對應於“創建”[Created])
3、onLoading(對應於“初始化”[Initialized])
4、onLoaded(對應於“請求發送”[Request sent])
5、onInteractive(對應於“響應接收”[Response being received])
6、onXYZ(XYZ 表示響應的狀態代碼,參見狀態代碼)對應於指定的響應狀態代碼回調、onSuccess 或 onFailure(見下文)
7、onComplete
最後兩步對應於響應接收完成(Response received)。如果定義了一個與指定狀態代碼相關的回調函數,它將會被調用。否則,如果 onSuccess 被定義並且響應被認爲是成功的(見下文),onSuccess 就會被調用,如果響應不成功並且定義了 onFailure,則調用 onFailure。onComplete 在上述回調結束後纔會被調用。

幾個代碼示例:
var myrequest = new Ajax.Request('/rules/enable1/check_capture',{method:'POST', parameters:{'Id':10000,'user':'Joe'},onComplete:dosome});
function dosome(x){
if (x.responseText == "1"){
//do something
}else if(x.responseText == "0"){
//do something
}
貌似回調函數只能傳入一個參數,所以如果想用其他參數可以這樣。
var ct='this is a test'
var myrequest = new Ajax.Request('/rules/enable1/check_capture',{method:'POST', parameters:param,onComplete:function(x){
if (x.responseText == "1"){
//do something about ct
}else if(x.responseText == "0"){
//do something about ct
}});
function(x)裏的x參數不能省略,不能直接調用myrequest。


參考資料:Ajax選項
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章