摘要:在之前,是通過庫中的對象實現(xiàn)的,后我們可以直接使用創(chuàng)建一個對象,創(chuàng)建好之后,我們就可以通過對象來調(diào)用相應的方法了。
Ajax的主要作用
Ajax的主要作用是向服務器請求數(shù)據(jù)的同時無需卸載頁面,也就是局部刷新,可以帶來了更好的用戶體驗,同時ajax也有他的不足,比如破壞了瀏覽器的前進后退按鈕,對搜索引擎的支持不足,開發(fā)和調(diào)試工具缺乏
javascript中的Ajax在javascript中,ajax是通過XMLHttpRequest對象來實現(xiàn)的,這個對象用于和后臺進行數(shù)據(jù)的交互。在ie7之前,XHR是通過MSXML庫中的ActiveX對象實現(xiàn)的,ie7后我們可以直接使用 var xhr = new XMLHttpRequest();創(chuàng)建一個XHR對象,創(chuàng)建好之后,我們就可以通過xhr對象來調(diào)用相應的方法了。
javascript中Ajax的使用方法在javascript中,調(diào)用Ajax主要分為兩步,先open,再send
open指的是開啟一個請求,而send負責發(fā)送這個請求
open()方法
xhr.open("type","url",true);
第一個參數(shù)是請求類型,get/post
第二個參數(shù)是請求的地址
第三個參數(shù)表示請求是同步還是異步,true代表異步處理
注意的一點就是,open方法不會發(fā)送請求,只是啟動一個請求準備發(fā)送
send()方法
xhr.send(null);
send方法將請求送給服務器 send方法接受一個參數(shù)作為要發(fā)送的數(shù)據(jù),如果不需要發(fā)送數(shù)據(jù),參數(shù)設為null
檢測響應狀態(tài)碼
一般請求發(fā)送之后,我們可以根據(jù)xhr的status屬性來判斷下一步的操作,status屬性會返回一個http狀態(tài)碼
100-200表示請求已經(jīng)接受,需要繼續(xù)處理
200-300表示請求已被服務器成功接收
300-400表示重定向,需要客戶端采取進一步操作
400-500表示客戶端發(fā)生錯誤, 妨礙了服務器的處理
500-600表示服務器處理請求的過程發(fā)生錯誤
`if((xhr.status>=200&&xhr.status<300)||xhr.status==304){ console.log(“request success”); }else{ console.log(“request failed”); } `
檢測 readyStatus屬性
發(fā)送異步請求的時候,一般要檢測xhr的readyState屬性,這個屬性表示請求過程的當前活動階段,一共有5個值,0,1,2,3,4
0代表為初始化,open()未調(diào)用
1代表啟動 已調(diào)用open,未調(diào)用send
2代表 已經(jīng)調(diào)用send, 但還沒有接受到響應
3代表 接受到部分響應數(shù)據(jù)
4代表 接受到全部響應數(shù)據(jù)
當readyState的值發(fā)生變化時,就會觸發(fā)一次readystatechange事件,用這個事件檢測每次狀態(tài)變化后的值。
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if((xhr.status>=200&&xhr.status<300)||xhr.status==304){ console.log("request success"); }else{ console.log("request failed"); } } } xhr.open("get","test.php",true); xhr.send(null);get請求和post請求
get請求,常用于向服務器查詢某些信息,get可將查詢的字符串參數(shù)加在url的末尾
xhr.open("get","test.phpname1=value1&name2=value2",true);
post請求,通常用于向服務器發(fā)送應該被保存的數(shù)據(jù),post請求的主體可以包含格式不限且大量的數(shù)據(jù),
xhr.open("post","test.php",true); xhr.send("name1=value1&name2=value2");
get請求和post請求的區(qū)別
get請求會將參數(shù)跟在url后進行傳遞,而post則是作為http消息實體內(nèi)容發(fā)送給服務器
get方式對于傳輸?shù)臄?shù)據(jù)有大小限制,通常不能大于2kb,而post方式傳遞的數(shù)據(jù)量大小沒有限制
get方式會將請求的數(shù)據(jù)會被緩存起來,可以從瀏覽器的歷史記錄中讀取這些數(shù)據(jù),所以會帶來一些安全性方面的問題,而post相對來說安全很多
jQuery中的Ajaxjavascript的ajax操作比較復雜, jQuery提供了一系列的方法,大大簡潔了Ajax開發(fā)
1.load()方法
load(url,data,callback);
load方法主要是用來遠程載入HTML代碼并插入DOM 第一個參數(shù)是要訪問的HTML的url地址 第二個參數(shù)是要發(fā)送至服務器的key:value數(shù)據(jù) 第三個參數(shù)是回調(diào)函數(shù),需要注意的是:load方法的回調(diào)函數(shù)無論請求成功或者失敗都會執(zhí)行 load方法的傳遞方式是根據(jù)參數(shù)data來自動指定的 $("#submit").load("test.php",function(){}); // 無參數(shù)傳遞,get方式 $("#submit").load("test.php"{name:"fang",age:"30"},function(){}); // 有參數(shù)傳遞,post方式
2.$.get()方法
$.get(url,data,callback,type)
前兩個參數(shù)和load方法是一樣的 但是回調(diào)函數(shù)只有在載入成功的時候才會執(zhí)行 第四個參數(shù)是服務器返回的內(nèi)容格式,如xml,html,json,script,text $.get("test.php",{ name : "fang", age : "33" },function(){ //回調(diào)函數(shù) },type)
3.$.post()方法
$.post(url,data,callback,type)
前兩個參數(shù)和load,$.get()方法是一樣的 但是回調(diào)函數(shù)只有在載入成功的時候才會執(zhí)行 第四個參數(shù)是服務器返回的內(nèi)容格式,如xml,html,json,script,text $.post("test.php",{ name : "fang", age : "33" },function(){ //回調(diào)函數(shù) },type)
4.$.ajax()方法
$.ajax()方法,這是方法不僅可是實現(xiàn)上面的load,$.get(),$.post()方法,而且還可以設定多種狀態(tài)下的回調(diào)函數(shù)
$.ajax(options)是jQuery的最底層Ajax實現(xiàn),這個方法只有一個參數(shù),但是這個參數(shù)內(nèi)包含了所需要的一切信息,參數(shù)以key:value形式存在,所有參數(shù)都是可選的
$.ajax(url,type,timeout,data,datatype,beforeSend,complete,success,error,global)這些是所有的參數(shù)
url:發(fā)送請求的地址
type:請求方式,默認get
timeout:設置請求超時時間
data:發(fā)送到服務器的數(shù)據(jù)
datatype:預期服務器返回的數(shù)據(jù)類型
beforeSend:發(fā)送請求前可以修改XMLHttpRequest對象的函數(shù)
complete:請求完成后調(diào)用的回調(diào)函數(shù)
success:請求成功后調(diào)用的回調(diào)函數(shù)
error:請求失敗后調(diào)用的回調(diào)函數(shù)
global:表示是否觸發(fā)全局Ajax事件,默認為true
$.ajax({ url:"test.php", type:"GET", datatype:"json", beforeSend:function(){}, success:function(){}, error:function(){}, complete:function(){} })
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84159.html
jQuery 實現(xiàn)Ajax應用 使用load()方法異步請求數(shù)據(jù) 使用load()方法通過Ajax請求加載服務器中的數(shù)據(jù),并把返回的數(shù)據(jù)放置到指定的元素中,它的調(diào)用格式為: load(url,[data],[callback]) 參數(shù)url為加載服務器地址,可選項data參數(shù)為請求時發(fā)送的數(shù)據(jù),callback參數(shù)為數(shù)據(jù)請求成功后,執(zhí)行的回調(diào)函數(shù) 使用getJSON()方法異步加載JSON格式數(shù)...
摘要:一概述什么是同步,什么是異步同步現(xiàn)象客戶端發(fā)送請求到服務器端,當服務器返回響應之前,客戶端都處于等待卡死狀態(tài)異步現(xiàn)象客戶端發(fā)送請求到服務器端,無論服務器是否返回響應,客戶端都可以隨意做其他事情,不會被卡死的運行原理頁面發(fā)起請求,會將請求發(fā)送 一、Ajax概述1.什么是同步,什么是異步同步現(xiàn)象:客戶端發(fā)送請求到服務器端,當服務器返回響應之前,客戶端都處于等待 卡死狀態(tài)異步現(xiàn)象:客戶...
摘要:是與服務器交換數(shù)據(jù)并更新部分網(wǎng)頁的藝術(shù),在不重新加載整個頁面的情況下。對象是的核心,所有現(xiàn)代瀏覽器均支持對象和使用。用于在后臺與服務器交換數(shù)據(jù)。及時有效地幫助學員解決疑難問題,提高學員的學習積極性。 Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。 AJAX...
摘要:因為請求是異步的,我們無法獲知請求的進度和響應狀態(tài),給我們提供了一個事件,我們可以通過監(jiān)聽這個時間來關(guān)注這種變化,所以下一步是注冊事件。請求還沒有被發(fā)送。方法已調(diào)用,請求已發(fā)送到服務器。到此,請求準備完全完成。 上一篇單獨寫的是ajax跨域,這一篇就來詳細說一說ajax,ajax是現(xiàn)代web開發(fā)中必不可少的一部分內(nèi)容,非常基礎(chǔ)也非常重要,這篇總結(jié)一下到目前為止我對ajax的理解。 什么...
摘要:因為請求是異步的,我們無法獲知請求的進度和響應狀態(tài),給我們提供了一個事件,我們可以通過監(jiān)聽這個時間來關(guān)注這種變化,所以下一步是注冊事件。請求還沒有被發(fā)送。方法已調(diào)用,請求已發(fā)送到服務器。到此,請求準備完全完成。 上一篇單獨寫的是ajax跨域,這一篇就來詳細說一說ajax,ajax是現(xiàn)代web開發(fā)中必不可少的一部分內(nèi)容,非常基礎(chǔ)也非常重要,這篇總結(jié)一下到目前為止我對ajax的理解。 什么...
閱讀 1711·2019-08-30 15:54
閱讀 3361·2019-08-26 17:15
閱讀 3565·2019-08-26 13:49
閱讀 2607·2019-08-26 13:38
閱讀 2325·2019-08-26 12:08
閱讀 3116·2019-08-26 10:41
閱讀 1397·2019-08-26 10:24
閱讀 3410·2019-08-23 18:35