Ajax局部非同步刷新全稱ASynchronous JavaScript And XML.使用Javascript代碼獲取伺服器的數據,Ajax當中有兩個請求方法,一個是get方法,一個是post請求方法。 ①get請求方法:請求參數在URL的後面,多個參數之間用&連接。 ②post請求方法:請求參在 ...
Ajax局部非同步刷新全稱ASynchronous JavaScript And XML.使用Javascript代碼獲取伺服器的數據,Ajax當中有兩個請求方法,一個是get方法,一個是post請求方法。
①get請求方法:請求參數在URL的後面,多個參數之間用&連接。
②post請求方法:請求參在請求體當中。
③同步請求:界面全部卡頓,卡頓時間由網路速度決定。如採用同步請求則xhr.onreadystatechange的回調函數不被執行,需要修改代碼後才能夠獲取數據 ,將回調函數去掉即可。方法如下:
xhr.onreadystatechange=function(){
if(xhr.readystate == 4){
if(xhr.states == 200){
}
}
}//這是採用非同步刷新的代碼
如採用同步刷新只需將xhr.onreadystatechange的回調函數去掉即可:
if(xhr.readystate == 4){
if(xhr.states == 200){
}
}
非同步的底層原理:JavaScript代碼是單線程的,代碼從上向下執行,一行一行執行。
事件隊列:JavaScript空閑的時候會去事件隊列裡面看看有沒有方法或者回調函數已經達到了觸發條件,因為JavaScript是單線程的,一次只能做一件事。
setTimeout(function(){
console.log("我會被排在事件隊列中去");
},0)
console.log("我是從上到下執行,不用等待");
上面代碼列印順序是先列印不用等待的,再列印在事件隊列中的。雖然setTimeout的延遲時間是0但是事件隊列中的方法與回調函數是等到其他不需要排隊的函數執行完後再來執行達到條件的。
二、跨域
①同源策略:協議、功能變數名稱、埠號都相同的叫同源。
http和https就是不同的協議,www.taobao.com和www.baidu.com就是不同的功能變數名稱,www.taobao.com:80和www.baidu.com:40就是不同的埠號。
②Ajax只能獲取同源路徑下的數據,Ajax是為了訪問自己的數據,跨域是為了獲取伺服器的數據。
③跨域的本質是伺服器返回了一個方法的調用,這個方法是我們事先定義好的,而方法中的參數就是我們想要的數據。