原生和jQuery的ajax用法詳解
Ajax簡(jiǎn)介
Ajax被認(rèn)為是(Asynchronous(異步) JavaScript And Xml的縮寫)?,F(xiàn)在,允許瀏覽器與服務(wù)器通信而無(wú)須刷新當(dāng)前頁(yè)面的技術(shù)都被叫做Ajax.
同步是指:發(fā)送方發(fā)出數(shù)據(jù)后,等接收方發(fā)回響應(yīng)以后才發(fā)下一個(gè)數(shù)據(jù)包的通訊方式。
異步是指:發(fā)送方發(fā)出數(shù)據(jù)后,不等接收方發(fā)回響應(yīng),接著發(fā)送下個(gè)數(shù)據(jù)包的通訊方式 。
AJAX的缺陷
AJAX大量使用了JavaScript和AJAX引擎,而這個(gè)取決于瀏覽器的支持。IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支持,Mozilla雖然也支持AJAX,但是提供XMLHttpRequest的方式不一樣。所以,使用AJAX的程序必須測(cè)試針對(duì)各個(gè)瀏覽器的兼容性。
AJAX更新頁(yè)面內(nèi)容的時(shí)候并沒(méi)有刷新整個(gè)頁(yè)面,因此,網(wǎng)頁(yè)的后退功能是失效的;有的用戶還經(jīng)常搞不清楚現(xiàn)在的數(shù)據(jù)是舊的還是已經(jīng)更新過(guò)的。這個(gè)就需要在明顯位置提醒用戶“數(shù)據(jù)已更新”。
對(duì)流媒體的支持沒(méi)有FLASH好。
一些手持設(shè)備(如手機(jī)、PDA等)現(xiàn)在還不能很好的支持Ajax。
form數(shù)據(jù)的序列化:
$('#submit').click(function(){ $('#form').serialize(); //會(huì)根據(jù)input里面的name,把數(shù)據(jù)序列化成字符串;eg:name=yang $('#form').serializeArray(); //會(huì)根據(jù)input里面的name,把數(shù)據(jù)序列化成數(shù)組;eg:[object] //注意:沒(méi)有name會(huì)獲取不到值 //下面兩種不是jQuery的方法 JSON.parse() //json字符串轉(zhuǎn)化為json對(duì)象 JSON.stringify() //json對(duì)象轉(zhuǎn)化為json字符串 });
jQuery的ajax方法:
$.ajax({ url:'/comm/test1.php', type:'POST', //GET async:true, //或false,是否異步 data:{ name:'yang',age:25 }, timeout:5000, //超時(shí)時(shí)間 dataType:'json', //返回的數(shù)據(jù)格式:json/xml/html/script/jsonp/text beforeSend:function(xhr){ console.log(xhr) console.log('發(fā)送前') }, success:function(data,textStatus,jqXHR){ console.log(data) console.log(textStatus) console.log(jqXHR) }, error:function(xhr,textStatus){ console.log('錯(cuò)誤') console.log(xhr) console.log(textStatus) }, complete:function(){ console.log('結(jié)束') } })
原生的ajax方法:
$('#send').click(function(){ //請(qǐng)求的5個(gè)階段,對(duì)應(yīng)readyState的值 //0: 未初始化,send方法未調(diào)用; //1: 正在發(fā)送請(qǐng)求,send方法已調(diào)用; //2: 請(qǐng)求發(fā)送完畢,send方法執(zhí)行完畢; //3: 正在解析響應(yīng)內(nèi)容; //4: 響應(yīng)內(nèi)容解析完畢; var data = 'name=yang'; var xhr = new XMLHttpRequest(); //創(chuàng)建一個(gè)ajax對(duì)象 xhr.onreadystatechange = function(event){ //對(duì)ajax對(duì)象進(jìn)行監(jiān)聽(tīng) if(xhr.readyState == 4){ //4表示解析完畢 if(xhr.status == 200){ //200為正常返回 console.log(xhr) } } }; xhr.open('POST','url',true); //建立連接,參數(shù)一:發(fā)送方式,二:請(qǐng)求地址,三:是否異步,true為異步 xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //可有可無(wú) xhr.send(data); //發(fā)送 });
相關(guān)文章
jQuery源碼分析之jQuery中的循環(huán)技巧詳解
這篇文章主要介紹了jQuery源碼中的循環(huán)技巧,包括各類選擇、判斷、遍歷等等操作,非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09jquery實(shí)現(xiàn)點(diǎn)擊TreeView文本父節(jié)點(diǎn)展開(kāi)/折疊子節(jié)點(diǎn)
今天客戶提出要點(diǎn)擊菜單(TreeView實(shí)現(xiàn)的)的父級(jí)節(jié)點(diǎn)時(shí),展開(kāi)節(jié)點(diǎn),很多新手朋友可能對(duì)此會(huì)很陌生,接下來(lái)介紹解決方法,感興趣的朋友可以了解下2013-01-01基于jquery實(shí)現(xiàn)的樹(shù)形菜單效果代碼
這篇文章主要介紹了基于jquery實(shí)現(xiàn)的樹(shù)形菜單效果代碼,實(shí)例分析了jquery基于鼠標(biāo)事件動(dòng)態(tài)改變頁(yè)面元素屬性的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09jQuery幻燈片特效代碼分享 鼠標(biāo)滑過(guò)按鈕時(shí)切換(2)
本文實(shí)例講述了jQuery實(shí)現(xiàn)時(shí)尚漂亮的幻燈片特效,基本能滿足你在網(wǎng)頁(yè)上使用幻燈片(焦點(diǎn)圖)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08基于jquery編寫的橫向自適應(yīng)幻燈片切換特效的實(shí)例代碼
全屏自適應(yīng)jquery焦點(diǎn)圖切換特效,在IE6這個(gè)瀏覽器兼容性問(wèn)題上得到了和諧,兼容IE6,適用瀏覽器:IE6、IE7、IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗.相關(guān)代碼2013-08-08利用jQuery實(shí)現(xiàn)打字機(jī)字幕效果實(shí)例代碼
這篇文章給大家介紹了如何利用jQuery來(lái)實(shí)現(xiàn)打字機(jī)字幕效果,文章介紹了實(shí)現(xiàn)原理和代碼,實(shí)現(xiàn)以后的效果還是不錯(cuò),有需要的可以參考借鑒。2016-09-09