原生和jQuery的ajax用法詳解
Ajax簡(jiǎn)介
Ajax被認(rèn)為是(Asynchronous(異步) JavaScript And Xml的縮寫)。現(xiàn)在,允許瀏覽器與服務(wù)器通信而無須刷新當(dāng)前頁面的技術(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更新頁面內(nèi)容的時(shí)候并沒有刷新整個(gè)頁面,因此,網(wǎng)頁的后退功能是失效的;有的用戶還經(jīng)常搞不清楚現(xiàn)在的數(shù)據(jù)是舊的還是已經(jīng)更新過的。這個(gè)就需要在明顯位置提醒用戶“數(shù)據(jù)已更新”。
對(duì)流媒體的支持沒有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]
//注意:沒有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)聽
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'); //可有可無
xhr.send(data); //發(fā)送
});
相關(guān)文章
淺談jquery回調(diào)函數(shù)callback的使用
這篇文章主要簡(jiǎn)單介紹了jquery回調(diào)函數(shù)callback的使用,需要的朋友可以參考下2015-01-01
jQuery實(shí)現(xiàn)單擊按鈕遮罩彈出對(duì)話框(仿天貓的刪除對(duì)話框)
單擊刪除按鈕或者登陸按鈕后,彈出對(duì)話框問你是否刪除或者彈出一個(gè)登陸對(duì)話框,本文使用jquery來實(shí)現(xiàn)這種效果,需要的朋友可以參考下2014-04-04
jQuery實(shí)現(xiàn)仿微軟首頁感應(yīng)鼠標(biāo)變化滑動(dòng)窗口效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)仿微軟首頁感應(yīng)鼠標(biāo)變化滑動(dòng)窗口效果,基于jQuery響應(yīng)鼠標(biāo)事件簡(jiǎn)單實(shí)現(xiàn)動(dòng)畫效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-10-10
JQuery調(diào)webservice實(shí)現(xiàn)郵箱驗(yàn)證(檢測(cè)是否可用)
JQuery調(diào)webservice實(shí)現(xiàn)郵箱驗(yàn)證:判斷郵箱是否存在如果不存在提示可以使用否從提示該郵箱已存在請(qǐng)重新輸入,感興趣的朋友可以參下哈,希望對(duì)你有所幫助2013-05-05
JQuery設(shè)置和去除disabled屬性的5種方法總結(jié)
下面與大家分享下兩種方法設(shè)置disabled屬性以及三種方法移除disabled屬性,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-05-05

