ajax的全稱是asynchronous javascript and XML ,它是異步的js和XML。它是局部刷新,異步操作。
大家都知道ajax是單線程的,而且本身是同步的,但是單線程為什么可以異步肯定大多數(shù)人并不知道,下面由張燕妮同學(xué)給大家講解一下子(不是很官方,但是很好理解):
在講解之前我先給大家說一下線性數(shù)據(jù)結(jié)構(gòu)吧,我們可以把單線性數(shù)據(jù)結(jié)構(gòu)當(dāng)成一條線段,線段是有頭有尾的大家總知道吧,單線程就是線段的頭部沒有前區(qū),尾部沒有后區(qū),中間的每個(gè)元素前后都各有兩個(gè)元素,少了一個(gè)元素的時(shí)候,同時(shí)會(huì)有兩個(gè)元素知道并且告訴你。而且是缺一個(gè)元素都不行。
回調(diào)函數(shù)就是把函數(shù)A當(dāng)做參數(shù)傳遞給函數(shù)B,函數(shù)B執(zhí)行這個(gè)函數(shù)A?;卣{(diào)函數(shù)最常見的用法就是我們ajax請求數(shù)據(jù)時(shí)用到的succes() and error()這兩個(gè)函數(shù),還有setInterval里面的第一個(gè)參數(shù),也是用了回調(diào)函數(shù)?;卣{(diào)函數(shù),回調(diào)函數(shù),回調(diào)的字面意思可不就是掉個(gè)頭回去再把那條路走一遍嘛。所以ajax在回調(diào)函數(shù)success()或者error被觸發(fā)的時(shí)候掉過頭去又走了一次,然后他就是異步的了,同時(shí)ajax是異步的,跟他類似的還有es6的promise(異步的同步操作)。
瀏覽器的進(jìn)程是多進(jìn)程的,至于為什么就跟你為什么叫XXX是一個(gè)道理呦~
第二個(gè)問題,當(dāng)萬能的前端遇到ajax獲取后臺(tái)數(shù)據(jù)時(shí)亂碼是怎么回事應(yīng)該是大家很糾結(jié)的。
-或許是網(wǎng)速問題,網(wǎng)太慢。
-或許是編碼格式不統(tǒng)一,你的后臺(tái)兄弟坑了你,哈哈哈哈
ajax原生代碼都可否記得,不如我?guī)銈冝垡槐檠剑创a:
//1.創(chuàng)建xmlhttpRequest對(duì)象
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.獲取返回?cái)?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的特性及亂碼問題,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- ThinkPHP3.1新特性之對(duì)Ajax的支持更加完善
- JQuery ajax 返回json時(shí)出現(xiàn)中文亂碼該如何解決
- 如何解決JQuery ajaxSubmit提交中文亂碼
- ajax獲取數(shù)據(jù)中文亂碼問題最簡單的完美解決方案
- escape函數(shù)解決js中ajax傳遞中文出現(xiàn)亂碼問題
- JQuery的Ajax中Post方法傳遞中文出現(xiàn)亂碼的解決方法
- Asp中使用JQuery的AJAX提交中文亂碼解決方法
- JQuery中Ajax的Post提交在IE下中文亂碼的解決方法