jquery的ajax總結(jié)中....

ajax的優(yōu)勢(shì)和不足

優(yōu)勢(shì):

? ?1.不需要插件支持(一般瀏覽器且默認(rèn)開(kāi)啟JavaScript即可);

? ?2.用戶體驗(yàn)極佳(不刷新頁(yè)面即可獲取可更新的數(shù)據(jù));

? 3.提升Web程序的性能(在傳遞數(shù)據(jù)方面做到按需放松,不必整體提交);

? 4.減輕服務(wù)器和帶寬的負(fù)擔(dān)(將服務(wù)器的一些操作轉(zhuǎn)移到客戶端);

缺點(diǎn):

1.不同版本的瀏覽器度XMLHttpRequest對(duì)象支持度不足(比如IE5之前);

2.前進(jìn)、后退的功能被破壞(因?yàn)锳jax永遠(yuǎn)在當(dāng)前頁(yè),不會(huì)幾率前后頁(yè)面);

3.搜索引擎的支持度不夠(因?yàn)樗阉饕媾老x(chóng)還不能理解JS引起變化數(shù)據(jù)的內(nèi)容);

4.開(kāi)發(fā)調(diào)試工具缺乏(相對(duì)于其他語(yǔ)言的工具集來(lái)說(shuō),JS或Ajax調(diào)試開(kāi)發(fā)少的可憐)。

異步和同步:

異步:好比我們發(fā)短信,非阻塞

同步:好比我們打電話 阻塞

ajax都是實(shí)行的是異步加載模式

?jquery采用了三層封裝:

最底層的封裝方式:

$.ajax();

第二層:

.load(),$.get(), $.post()

最高層:

$.getscript()和$.getJSON();

.load()三個(gè)參數(shù):url-請(qǐng)求url地址,data(發(fā)送的key/value數(shù)據(jù)),callback(成功或失敗);.load()方法是局部方法,因?yàn)樗枰粋€(gè)包含元素的jQuery對(duì)象作為前綴。適合做靜態(tài)文件的異步獲取

案例:

$("#btn").click(function(){

$("#box").load('./2.html');

}

2.$("#btn").click(function(){

$("#box").load('./1.php');

})

3.$("#btn").click(function(){

$("#box").load('./1.php',{url:'lle'});

})



4.$("#btn").click(function(){

$("#box").load('./1.php',{url:'lle'});

},function(response,status,xhr){

console.log(response);

})


注意:status得到的值,如果成功返回?cái)?shù)據(jù)則為:success,否則為:error。XMLHttpRequest對(duì)象屬于JavaScript范疇,可以調(diào)用一些屬性如下:

屬性名

說(shuō)明

responseText

作為響應(yīng)主體被返回的文本

responseXML

如果響應(yīng)主體內(nèi)容類型是"text/xml"或"application/xml",

則返回包含響應(yīng)數(shù)據(jù)的XML DOM文檔

status

響應(yīng)的HTTP狀態(tài)

statusText

HTTP狀態(tài)的說(shuō)明

2.$.get()和$.post()是全局方法,無(wú)須指定某個(gè)元素。使用在需要傳遞參數(shù)到服務(wù)器頁(yè)面的

案例:

?$("#btn").click(function(){

$.get('./1.php',{

url:'lle'

}, function(response,status,xhr){

if(status=='success'){

$("#box").html(response);---

}

})

})

注意:第四參數(shù)type是指定異步返回的類型。一般情況下type參數(shù)是智能判斷,并不需要我們主動(dòng)設(shè)置,如果主動(dòng)設(shè)置,則會(huì)強(qiáng)行按照指定類型格式返回。


type自動(dòng)轉(zhuǎn)為html

$.post()方法的使用和$.get()基本上,具體區(qū)別如下:

1.GET請(qǐng)求是通過(guò)URL提交的,而POST請(qǐng)求則是HTTP消息實(shí)體提交的;

2.GET提交有大小限制(2KB),而POST方式不受限制;

3.GET方式會(huì)被緩存下來(lái),可能有安全性問(wèn)題,而POST沒(méi)有這個(gè)問(wèn)題;

4.GET方式通過(guò)$_GET[]獲取,POST方式通過(guò)$_POST[]獲取。

3.$.post();

$("#btn").click(function(){

$.post('./1.php',{

url:'lle'

}, function(response,status,xhr,type){

if(status=='success'){

$("#box").html(response);

console.log(type);

}

})

})


$.getScript()和$.getJSON()

jQuery提供了一組用于特定異步加載的方法:$.getScript(),用于加載特定的JS文件;

$.getJSON(),用于專門加載JSON文件

//點(diǎn)擊按鈕后再加載JS文件$('input').click(function () {

$.getScript('test.js');

});

$.getJSON()方法是專門用于加載JSON文件的,使用方法和之前的類似。$('input').click(function () {

$.getJSON('test.json', function (response, status, xhr) {

alert(response[0].url);

});

});

4.$.ajax()

$.ajax()是所有ajax方法中最底層的方法,所有其他方法都是基于$.ajax()方法的封裝。

$('form button').click(function () {

$.ajax({

type : 'POST',

url : '1.php',

data : $('form').serialize(),

success : function (response, status, xhr) { alert(response);

} });

});

小案例:自己用最近學(xué)了點(diǎn)php基本語(yǔ)法寫后臺(tái)數(shù)據(jù),挺興奮的!畢竟自己心里知道一路自學(xué)前端以來(lái),這次又是一個(gè)不錯(cuò)的成長(zhǎng)!加油!





5.加載請(qǐng)求:

在Ajax異步發(fā)送請(qǐng)求時(shí),遇到網(wǎng)速較慢的情況,就會(huì)出現(xiàn)請(qǐng)求時(shí)間較長(zhǎng)的問(wèn)題。而超過(guò)一定時(shí)間的請(qǐng)求,用戶就會(huì)變得不再耐煩而關(guān)閉頁(yè)面。而如果在請(qǐng)求期間能給用戶一些提示,比如:正在努力加載中...,那么相同的請(qǐng)求時(shí)間會(huì)讓用戶體驗(yàn)更加的好一些。

jQuery提供了兩個(gè)全局事件,.ajaxStart()和.ajaxStop()。這兩個(gè)全局事件,只要用戶觸發(fā)

了Ajax,請(qǐng)求開(kāi)始時(shí)(未完成其他請(qǐng)求)激活.ajaxStart(),請(qǐng)求結(jié)束時(shí)(所有請(qǐng)求都結(jié)束了)

激活.ajaxStop()。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,274評(píng)論 0 7
  • 每日箴言: 每個(gè)人都有選擇的權(quán)利,你不選擇我,說(shuō)明你選擇了比我更重要的東西。[http://requirejs.o...
    全棧弄潮兒閱讀 2,975評(píng)論 2 85
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,948評(píng)論 18 139
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,378評(píng)論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,200評(píng)論 0 1