AJAX

1.AJAX:異步的javascript和xml;

通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。1.創(chuàng)建 XMLHttpRequest對(duì)象,用于和服務(wù)器交換數(shù)據(jù)

var xmlhttp = new XMLHttpRequest();
  //ie5\ie6創(chuàng)建方法(ActiveX)
  var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  // 以下代碼實(shí)現(xiàn)兼容(來(lái)自w3c)
  var xmlhttp;if (window.XMLHttpRequest) {
  // code       for IE7+, Firefox, Chrome, Opera, Safari 
  xmlhttp=new XMLHttpRequest(); 
}else {
// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
}`

2.向服務(wù)器發(fā)送請(qǐng)求xmlhttp.open("GET","test1.txt",true);//規(guī)定請(qǐng)求的類(lèi)型、URL 以及是否異步處理請(qǐng)求。xmlhttp.send();//將請(qǐng)求發(fā)送到服務(wù)器。
open(method,url,async)?method:請(qǐng)求的類(lèi)型;GET 或 POST?url:文件在服務(wù)器上的位置?async:true(異步)或 false(同步)當(dāng)是異步時(shí),瀏覽器把請(qǐng)求發(fā)送后就繼續(xù)做自己的事,當(dāng)onreadystatechange事件到來(lái)時(shí)說(shuō)明服務(wù)端的數(shù)據(jù)來(lái)了,這時(shí)再處理數(shù)據(jù)。類(lèi)似于一個(gè)節(jié)點(diǎn)綁定點(diǎn)擊事件后就做后面的事,當(dāng)用戶(hù)點(diǎn)擊了再執(zhí)行綁定的處理函數(shù)。
當(dāng)是同步時(shí),JavaScript 會(huì)等到服務(wù)器響應(yīng)就緒才繼續(xù)執(zhí)行。如果服務(wù)器繁忙或緩慢,應(yīng)用程序會(huì)掛起或停止。 當(dāng)使用 async=false時(shí),不用編寫(xiě) onreadystatechange 函數(shù),把代碼放到 send() 語(yǔ)句后面即可.
注釋?zhuān)寒?dāng)您使用async=false 時(shí),請(qǐng)不要編寫(xiě)onreadystatechange 函數(shù) - 把代碼放到 send() 語(yǔ)句后面即可.

send(string)?string:僅用于 POST 請(qǐng)求

3.服務(wù)器響應(yīng)
responseText 獲得字符串形式的響應(yīng)數(shù)據(jù)。 responseXML 獲得 XML 形式的響應(yīng)數(shù)據(jù)。 document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

4.onreadystatechange 事件;當(dāng)請(qǐng)求被發(fā)送到服務(wù)器時(shí),我們需要執(zhí)行一些基于響應(yīng)的任務(wù)。每當(dāng) readyState 改變時(shí),就會(huì)觸發(fā) onreadystatechange 事件。 readyState 屬性存有 XMLHttpRequest 的狀態(tài)信息。 下面是 XMLHttpRequest 對(duì)象的三個(gè)重要的屬性:
**onreadystatechange **: 存儲(chǔ)函數(shù)(或函數(shù)名),每當(dāng) readyState 屬性改變時(shí),就會(huì)調(diào)用該函數(shù)。
**readyState **: XMLHttpRequest 的狀態(tài)。從 0 到 4 發(fā)生變化。0: 請(qǐng)求未初始化1: 服務(wù)器連接已建立2: 請(qǐng)求已接收3: 請(qǐng)求處理中4: 請(qǐng)求已完成,且響應(yīng)已就緒
status :200: "OK"404: 未找到頁(yè)面
以下為部分js代碼:
function ajax(opts){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState==4 && xmlhttp.status==200){ opts.success(xmlhttp.responseText); }else if(xmlhttp.status==404){ opts.error(); } } xmlhttp.open(opts.type,opts.url+"?"+url(opts),true); xmlhttp.send(); }

2.Jquery ajax

防止重復(fù)提交當(dāng)用戶(hù)提交請(qǐng)求時(shí),后臺(tái)處理請(qǐng)求是需要時(shí)間的。如果在后臺(tái)給出響應(yīng)之前用戶(hù)多次點(diǎn)擊提交,后端就會(huì)多次收到請(qǐng)求,返還多次內(nèi)容。對(duì)于表單,可在用戶(hù)初次提交后把按鈕設(shè)置為disabled,當(dāng)數(shù)據(jù)響應(yīng)后再去掉disabled屬性。對(duì)于ajax請(qǐng)求,可設(shè)置標(biāo)記變量flag,初始時(shí)設(shè)置flag為true.在用戶(hù)點(diǎn)擊提交按鈕后,判斷flag是否為true,如果是則發(fā)送ajax請(qǐng)求,并把flag設(shè)置為false。 等服務(wù)端給出響應(yīng)后再把flag設(shè)置為true。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(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
  • 要完整實(shí)現(xiàn)一個(gè)AJAX異步調(diào)用和局部刷新,通常需要以下幾個(gè)步驟: (1)創(chuàng)建XMLHttpRequest對(duì)象,也就...
    親愛(ài)的翔子閱讀 505評(píng)論 0 0
  • 1、ajax技術(shù)的背景 不可否認(rèn),ajax技術(shù)的流行得益于google的大力推廣,正是由于google earth...
    raincoco閱讀 428評(píng)論 0 4
  • AJAX 是一種在無(wú)需重新加載整個(gè)網(wǎng)頁(yè)的情況下,能夠更新部分網(wǎng)頁(yè)的技術(shù)。什么是 AJAX ? AJAX = ...
    逍遙嘆6閱讀 264評(píng)論 0 0
  • 什么是Ajax 不刷新頁(yè)面的情況下從服務(wù)器獲取、提交數(shù)據(jù)的一種數(shù)據(jù)交互方式。 Ajax使用步驟 1\創(chuàng)建Ajax對(duì)...
    LaBaby_閱讀 292評(píng)論 0 0