1.同步與異步的區(qū)別:
同步:提交請(qǐng)求->等待服務(wù)器處理->處理完畢返回 這個(gè)期間客戶(hù)端瀏覽器不能干任何事
異步: 請(qǐng)求通過(guò)事件觸發(fā)->服務(wù)器處理(這是瀏覽器仍然可以作其他事情)->處理完畢
2.get post區(qū)別(http請(qǐng)求方法)
get:用于獲取數(shù)據(jù),通過(guò)網(wǎng)址進(jìn)行數(shù)據(jù)傳遞(name=''&name1=''),容量小,不適合傳大數(shù)據(jù),安全性差,數(shù)據(jù)泄漏,有緩存
post:用于上傳數(shù)據(jù),不通過(guò)網(wǎng)址,容量大,安全性好一點(diǎn),沒(méi)緩存
2.如何使用Ajax從服務(wù)器獲取數(shù)據(jù)?
①創(chuàng)建對(duì)象
②連接到服務(wù)器,open方法
pen(方法, 文件名, 異步傳輸)
GET,POST ? ? ??URL ? ? ? ??true表示異步,flase表示同步,一般情況下是異步,默認(rèn)為true。
③發(fā)送ajax請(qǐng)求
xhr.readyState==4表示請(qǐng)求已經(jīng)結(jié)束,服務(wù)器響應(yīng)完成。
status表示http請(qǐng)求的狀態(tài),200表示正常響應(yīng);404表示資源找不到;500表示服務(wù)器端錯(cuò)誤。
④發(fā)送ajax請(qǐng)求。
如果沒(méi)有數(shù)據(jù),可以不傳或者傳遞null;如果post請(qǐng)求傳遞數(shù)據(jù):首先設(shè)置xhr的請(qǐng)求頭信息:
xhr.setRequestHeader("Content-type","application/x-www-formurlencoded");
再傳遞參數(shù)send():
xhr.send(name=liujianhong&password=123);
dome:
封裝的函數(shù):Ajax.js
function ajax(url, fnSucc, fnFaild)
{
//1.創(chuàng)建Ajax對(duì)象,瀏覽器兼容性
if(window.XMLHttpRequest)
{
var oAjax=new XMLHttpRequest();
}
else
{
var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
}
//2.連接服務(wù)器
//open(方法, 文件名, 異步傳輸)
oAjax.open('GET', url, true);
//3.發(fā)送請(qǐng)求
oAjax.send();
//4.接收返回
oAjax.onreadystatechange=function ()
{
//oAjax.readyState //瀏覽器和服務(wù)器,進(jìn)行到哪一步了
if(oAjax.readyState==4) //讀取完成
{
if(oAjax.status==200) //成功
{
fnSucc(oAjax.responseText);//獲取內(nèi)容
}
else
{
if(fnFaild)
{
fnFaild(oAjax.status);
}
//alert('失敗:'+oAjax.status);
}
}
};
}
調(diào)用:
ajax('a.txt', function (str){ alert(str); });