JS實(shí)現(xiàn)Ajax的方法分析
本文實(shí)例分析了JS實(shí)現(xiàn)Ajax的方法。分享給大家供大家參考,具體如下:
一、什么是Ajax
不刷新的情況下讀取數(shù)據(jù)或提交數(shù)據(jù)
(最早出現(xiàn)ajax:谷歌地圖,拖動(dòng)一下出現(xiàn)一片新的視野)
應(yīng)用:用戶注冊(cè)、在線聊天、微博
特性:只能從服務(wù)器上去讀取數(shù)據(jù)(所以我們需要配置自己的服務(wù)器程序AMP)
二、使用Ajax
1.基礎(chǔ):請(qǐng)求并顯示靜態(tài)TXT文件
btn.onclick=function(){ ajax('abc.txt',function(str){ alert(str); }); }
①Ajax里面文件的編碼要和頁面的編碼一致
②緩存、阻止緩存(好處大于缺點(diǎn),所以不能什么時(shí)候都清緩存)
緩存能幫助我們加速網(wǎng)絡(luò)訪問,所謂緩存,就是服務(wù)器上這個(gè)文件,它只讀一次,第二次就從你的硬盤里、緩存里直接去拿,而不是真的通過網(wǎng)絡(luò)來請(qǐng)求
有時(shí)候我們需要阻止緩存(比如服務(wù)器上東西變化了,但客戶端請(qǐng)求來的還是原來的東西),辦法如下,加時(shí)間戳:
ajax('abc.txt?t='+new Date().getTime(),function(str){}); //new Date().getTime()為現(xiàn)在的毫秒數(shù),用戶絕對(duì)不可能在1毫秒內(nèi)點(diǎn)兩次,所以每次請(qǐng)求的t都不一樣
2.動(dòng)態(tài)數(shù)據(jù):請(qǐng)求Js(或json)文件
Ajax從服務(wù)器上讀取的所有東西都是以文本的形式(字符串)存在的,如何轉(zhuǎn)換?
eval()計(jì)算字符串里的值
ajax('abc.txt',function(str){ var arr=eval(str); alert(arr); });
例子:分頁
<ul id="list"> </ul> <a href="#"></a> <a href="#"></a> <a href="#"></a>
window.onload=function(){ var oUl=getElementById("list"); var aBtn=getElementsByTagName("a"); var i; for(i=0;i<aBtn.length;i++){ aBtn[i].index=i; aBtn[i].onclick=function(){ ajax('page'+(this.index+1)+'.txt',function(str){ var aData=eval(str); oUl.innerHTML=''; for(i=0;i<aData.length:i++){ var oLi=document.createElement("li"); oLi.innerHTML='<strong>'+aData[i].user+'</strong><i>'+aData[i].pass+'</i>'; oUl.appendChild(oLi); } }); }; } };
三、Ajax原理
HTTP請(qǐng)求方法
1.GET--用于獲取數(shù)據(jù)(如瀏覽貼子) 把數(shù)據(jù)放在URL(網(wǎng)址)里面來提交 安全性低、容量低、便于分享(將網(wǎng)址發(fā)給別人)
2.POST--用于上傳數(shù)據(jù)(如用戶注冊(cè)) 把數(shù)據(jù)放在不是URL的地方 安全性一般、容量幾乎無限、不便于分享
四、封裝一個(gè)自己的Ajax函數(shù)
1.創(chuàng)建Ajax
2.連接服務(wù)器
3.發(fā)送請(qǐng)求
4.接收返回
function ajax(url,fnSucc,fnFaild){ //1.創(chuàng)建 var oAjax=null; if(window.XMLHttpRequest){ //對(duì)ie6來說,直接用XMLHttpRequest是不存在的會(huì)出錯(cuò) oAjax=new XMLHttpRequest(); //ie6以上 }else{ oAjax=new ActiveXObject("Microsoft.XMLHTTP"); //ie6 } //2.連接服務(wù)器,open(方法,url,是否異步) oAjax.open('GET',url,true); //3.發(fā)送請(qǐng)求 oAjax.send(); //4.接收返回 OnReadyStateChange oAjax.onreadystatechange=function(){ //onreadystatechange事件 if(oAjax.readyState==4){ //readyState屬性:請(qǐng)求狀態(tài) 4是完成(完成不代表成功) if(oAjax.status==200){ //status屬性:請(qǐng)求結(jié)果 200代表成功 fnSucc(oAjax.responseText); //responseText屬性:服務(wù)器發(fā)回給我們的內(nèi)容 } else{ if(fnFaild){ fnFaild(); } } } }; };
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript中ajax操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- 詳解js的延遲對(duì)象、跨域、模板引擎、彈出層、AJAX【附實(shí)例下載】
- JavaScript Ajax實(shí)現(xiàn)異步通信
- JS 攔截全局ajax請(qǐng)求實(shí)例解析
- JavaScript中淺講ajax圖文詳解
- Ajax與用戶交互的JSON數(shù)據(jù)存儲(chǔ)格式
- $.ajax json數(shù)據(jù)傳遞方法
- jQuery Ajax異步處理Json數(shù)據(jù)詳解
- 淺析ajax請(qǐng)求json數(shù)據(jù)并用js解析(示例分析)
- javascript實(shí)現(xiàn)原生ajax的幾種方法介紹
- 用ajax動(dòng)態(tài)加載需要的js文件
- ThinkPHP中使用ajax接收json數(shù)據(jù)的方法
- ThinkPHP通過AJAX返回JSON的兩種實(shí)現(xiàn)方法
相關(guān)文章
JavaScript+Canvas實(shí)現(xiàn)文字粒子流特效
看到大師級(jí)的canvas文字粒子動(dòng)畫,要10個(gè)jq幣才能下載啊,我內(nèi)心的小鹿蠢蠢欲動(dòng),我也要寫一個(gè)。所以本文就來用Canvas實(shí)現(xiàn)簡(jiǎn)單的文字粒子流特效,希望對(duì)大家有所幫助2023-01-01JS實(shí)現(xiàn)雙擊屏幕滾動(dòng)效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)雙擊屏幕滾動(dòng)效果代碼,涉及JavaScript鼠標(biāo)事件的響應(yīng)及頁面元素屬性的動(dòng)態(tài)變換技巧,需要的朋友可以參考下2015-10-10Javascript實(shí)現(xiàn)的CSS代碼高亮顯示
到網(wǎng)上一位別出心裁的高手使用字符串而不是正則表達(dá)式實(shí)現(xiàn)了Javascript代碼高亮顯示,自己受益匪淺,于是就構(gòu)思了CSS代碼的高亮顯示。2009-11-11JS腳本加載后執(zhí)行相應(yīng)回調(diào)函數(shù)的操作方法
本文主要講解怎么在成功加載 js 文件后再執(zhí)行相應(yīng)回調(diào)任務(wù),對(duì)JS腳本加載后執(zhí)行相應(yīng)回調(diào)函數(shù)的操作方法感興趣的朋友,通過本文學(xué)習(xí)下吧2018-02-02關(guān)于flash遮蓋div浮動(dòng)層的解決方法
關(guān)于flash遮蓋div浮動(dòng)層2010-07-07JavaScript與DropDownList 區(qū)別分析
大家都知道,.NET中一些Web服務(wù)器控件解析并編譯,最終被渲染的時(shí)候,其實(shí)是轉(zhuǎn)化成了普通的html控件。2010-01-01微信小程序綁定手機(jī)號(hào)獲取驗(yàn)證碼功能
這篇文章主要介紹了微信小程序綁定手機(jī)號(hào)獲取驗(yàn)證碼功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10十個(gè)JavaScript?lodash中的高頻使用方法整理
本文梳理lodash中那些高頻使用的超究極無敵好用方法,熟練使用下面的十個(gè)方法能夠讓你的代碼原地起飛,為你的開發(fā)之旅極大的減輕心智負(fù)擔(dān),快跟隨小編一起學(xué)習(xí)一下吧2024-01-01