一周學會Mootools 1.4中文教程:(5)Ajax

來源:互聯網
上載者:User

  ajax在我們前台的開發中是非常重要的,所以我們單獨拿出一節課來講述,首先我們看一下mootools的ajax構成

文法:
var myRequest=new Request([參數]);


參數:
url - (string:預設是null) 要請求的URL.
data - (string:預設是空) 預設要請求或發送的資料.
link - (string:預設是'ignore') 可為'ignore','cancel','chain'.
'ignore' - 當請求正在執行之中時,新的請求將被忽略
'cancel' - 當請求正在執行之中時,將立即取消當前執行中的請求,開始執行新的請求
'chain' - 當請求正在執行之中時,將會把新的請求連結在當前請求之後,依次執行所有請求
method - (string:預設是'post') HTTP請求類型,可為'post' 或 'get'.
emulation - (boolean:預設是true) 模擬,通常不用理會
async - (boolean:預設是true) 非同步,如果設為false,那麼在請求資料的時候將會同步凍結瀏覽器請求,通常不用理會.
timeout - (integer:預設是0) 逾時時間
headers - (object) 設定content-type頭.
urlEncoded - (boolean:預設是true) url編碼,如果設為true,則content-type頭將被設為www-form-urlencoded+encoding
encoding - (string:預設是'utf-8') 資料的編碼.
noCache - (boolean;預設是false) 如果設為true,則不緩衝
isSuccess - (function) 請求結束之後的事件.
evalScripts - (boolean:預設是false) 如果設為true,結果內的script會被執行
evalResponse - (boolean:預設是false) 如果設為true,請求內容將會被執行.
user - (string:預設是null) 如果設定了此項,那麼請求的時候將會嘗試認證.
password - (string:預設是null) 和user搭配使用,設定此項的時候要填寫密碼而不是星號

上邊已經列出了所有的ajax參數,那麼mootools為我們提供了哪些事件呢?我們來看一下:

onRequest
當請求被發送的時候觸發.

onLoadstart
當請求已載入的時候觸發,在其他所有進程之前.

onProgress
當請求正在建立上傳或下載的進程時觸發.

onComplete
當請求結束時觸發.

onCancel
當請求被取消時觸發.

onSuccess
當請求成功完成後觸發.

onFailure
當請求失敗時觸發.

onException
當設定一個要求標頭失敗時觸發.

onTimeout
當超出了options.timeout所設定的毫秒數,卻沒有發生狀態值的改變時觸發.

我們再來看一下他還有哪些額外的方法:

setHeader
添加或修改一個請求的頭資訊. 並不會重寫options.
樣本:
var myRequest=new Request({url:'getData.php',method:'get',headers:{'X-Request':'JSON'}});
myRequest.setHeader('Last-Modified','Sat,1 Jan 2005 05:00:00 GMT');

getHeader
返迴響應頭,如果沒有發現則為null.
樣本:
var myRequest=new Request({url:'getData.php',method:'get',onSuccess:function(responseText,responseXML){
alert(this.getHeader('Date'));//顯示服務的資料 (如,'Thu,26 Feb 2009 20:26:06 GMT')
}});

send
開啟請求連結並發送在options裡預設的資料
樣本:
var myRequest=new Request({
url:'http://localhost/some_url'
}).send('save=username&name=John');

cancel
取消當前正啟動並執行請求.
樣本:
var myRequest=new Request({url:'mypage.html',method:'get'}).send('some=data');
myRequest.cancel();

isRunning
如果當前請求正在運行則返回true
樣本:
var myRequest=new Request({url:'mypage.html',method:'get'}).send('some=data');
if(myRequest.isRunning()) //It runs!

  上面說了那麼多還沒進入正題,連個完整的例子都沒出來,Mootools的ajax夠強大,我喜歡,嘿嘿,好了我們馬上進入正題給大家展示一個完整的ajax請求的例子:

    var myRequest=new Request({//建立Request對象
url:'image.php',//要請求的地址
onProgress:function(event,xhr){//建立進度顯示在控制台內
var loaded=event.loaded,total=event.total;
console.log(parseInt(loaded / total * 100,10));
}
}).send();//用他的send方法發送

//再來一個例子
var myElement=$('myElement');//選節點
var myRequest=new Request({//建立Request對象
url:'getMyText.php',//要請求的地址
method:'get',//get請求
     onTimeout:function(){//逾時
myElement.set('text','逾時了');
},
     onFailure:function(){//請求失敗
myElement.set('text','請求失敗了');
},
onProgress:function(event,xhr){//建立進度顯示在控制台內
var loaded=event.loaded,total=event.total;
console.log(parseInt(loaded / total * 100,10));
},
onRequest:function(){//當請求被發送時設定內容
myElement.set('text','loading...');
},
onSuccess:function(responseText){//結束後重設內容
myElement.set('text',responseText);
},
onFailure:function(){//失敗時提示
myElement.set('text','Sorry,your request failed:(');
}
});

//$('myLink')點擊時,觸發ajax的send方法
$('myLink').addEvent('click',function(event){
event.stop();//終止掉$('myLink')的預設事件(假如是<a ..>防止超連結跑到別的頁面上)
myRequest.send('userid='+this.get('data-userid'));
});

看完了上邊這個完整的樣本之後有沒有感覺Mootools的ajax很彪悍?還是你覺得他太複雜,沒關係我再來個簡潔型的,不管你有什麼癖好都讓你滿意.

   var myHTMLRequest=new Request.HTML().get('myPage.html');
var myHTMLRequest=new Request.HTML({url:'myPage.html'}).post('user_id=25&save=true');

<div id="content">Loading content...</div>
$('content').load('page_1.html');

//從這個網址載入"load/?user_id=25".
var myHTMLRequest=new Request.HTML({url:'load/'}).get({'user_id':25});

Data from Element via POST:
<form action="save/" method="post" id="user-form">
<p>
Search:<input type="text" name="search" />
Search in description:<input type="checkbox" name="search_description" value="yes" />
<input type="submit" />
</p>
</form>

//這裡是一個submit事件
var myHTMLRequest=new Request.HTML({url:'save/'}).post($('user-form'));

好了,這一課講完了,有問題就進群(16648471)討論吧,注意:加群的時候要說明你從哪個網站來到.

相關課程:
一周學會Mootools 1.4中文教程:序論
一周學會Mootools 1.4中文教程:(1)Dom選取器
一周學會Mootools 1.4中文教程:(2)函數
一周學會Mootools 1.4中文教程:(3)事件
一周學會Mootools 1.4中文教程:(4)類型
一周學會Mootools 1.4中文教程:(5)Ajax
一周學會Mootools 1.4中文教程:(6)動畫
一周學會Mootools 1.4中文教程:(7)匯總收尾

其他關於Mootools 1.4的文章:
我寫的Lightbox效果外掛程式,基於MooTools 1.4
我寫的萬年曆外掛程式(含天干地支,農曆,陽曆,節氣,各種節假日等),基於MooTools 1.4
我寫的類似本站首頁左上方的菜單的效果外掛程式,基於MooTools 1.4
Mootools中delay這個延遲函數的進階用法
Mootools中使用bind給函數綁定對象
Mootools中使用extend和implement給你的函數擴充功能或方法
自己寫個擴充把Mootools的文法改的和Jquery的文法一模一樣
Mootools1.4中自訂事件
用Mootools1.4寫了一個隨著滑鼠移動而背景圖也跟著移動的東西

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.