Ajax的特性及亂碼問題
ajax的全稱是asynchronous javascript and XML ,它是異步的js和XML。它是局部刷新,異步操作。
大家都知道ajax是單線程的,而且本身是同步的,但是單線程為什么可以異步肯定大多數(shù)人并不知道,下面由張燕妮同學給大家講解一下子(不是很官方,但是很好理解):
在講解之前我先給大家說一下線性數(shù)據(jù)結構吧,我們可以把單線性數(shù)據(jù)結構當成一條線段,線段是有頭有尾的大家總知道吧,單線程就是線段的頭部沒有前區(qū),尾部沒有后區(qū),中間的每個元素前后都各有兩個元素,少了一個元素的時候,同時會有兩個元素知道并且告訴你。而且是缺一個元素都不行。
回調函數(shù)就是把函數(shù)A當做參數(shù)傳遞給函數(shù)B,函數(shù)B執(zhí)行這個函數(shù)A。回調函數(shù)最常見的用法就是我們ajax請求數(shù)據(jù)時用到的succes() and error()這兩個函數(shù),還有setInterval里面的第一個參數(shù),也是用了回調函數(shù)。回調函數(shù),回調函數(shù),回調的字面意思可不就是掉個頭回去再把那條路走一遍嘛。所以ajax在回調函數(shù)success()或者error被觸發(fā)的時候掉過頭去又走了一次,然后他就是異步的了,同時ajax是異步的,跟他類似的還有es6的promise(異步的同步操作)。
瀏覽器的進程是多進程的,至于為什么就跟你為什么叫XXX是一個道理呦~
第二個問題,當萬能的前端遇到ajax獲取后臺數(shù)據(jù)時亂碼是怎么回事應該是大家很糾結的。
-或許是網(wǎng)速問題,網(wǎng)太慢。
-或許是編碼格式不統(tǒng)一,你的后臺兄弟坑了你,哈哈哈哈
ajax原生代碼都可否記得,不如我?guī)銈冝垡槐檠?,看代碼:
//1.創(chuàng)建xmlhttpRequest對象 var xhr; try{ xhr = new XMLHttpRequest(); console.log(5555) } catch(e){ //ie瀏覽器低版本兼容 xhr = new ActiveXobject("Microsoft.XMLHTTP"); } finally{ console.log(1111) } // try{} catch{} finally{}在這里是處理異常的方法,用if{}else{}也ok //if(window.XMLHttpRequest){ // xhr = new XMLHttpRequest(); // }else{ //ie瀏覽器低版本的兼容 // xhr = new ActiveXobject("Microsoft.XMLHTTP") //} //2.建立異步連接 xhr.open("get","url/+string",true/false);//true是異步,false是同步 //xhr.open("post","url",true/false) //3.發(fā)送異步請求 xhr.send(null);//get xhr.send(string);//post //4.獲取返回數(shù)據(jù) xhr.onreadystatechange = function (){ if((xhr.readystate)==4&&(xhr.status==200)){ var data = xhr.responseText; var data = JSON.parse(data); show(data); } } function show(data){ document.getElementById("div1").innerHTML = data; }
以上所述是小編給大家介紹的Ajax的特性及亂碼問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
讓ajax更加友好的實現(xiàn)方法(實時顯示后臺處理進度。)
我們能否讓ajax更加友好點,實時顯示服務器處理的進度了?這在一些長時間的請求中尤其重要,比如上傳文件、發(fā)送郵件、批量處理數(shù)據(jù)。2010-06-06