Ajax学习系列——向服务器发送请求
1、如何發(fā)送請(qǐng)求?
如果需要向服務(wù)器發(fā)送請(qǐng)求,我們使用的是XMLHttpRequest對(duì)象中的open()和send()方法。
var xhr = new XMLHttpRequest();//具體創(chuàng)建對(duì)象方法可以參考我的上一篇博客。 xhr.open("GET","http://www.baidu.com",true); xhr.send();open(method,url,async)函數(shù)參數(shù)介紹:
- method:請(qǐng)求的類型;只可能是GET或POST;
- url:服務(wù)器地址或請(qǐng)求的文件在服務(wù)器的位置;
- async:true(異步請(qǐng)求)或false(同步請(qǐng)求)
send(string)函數(shù)參數(shù)介紹:
- string:僅用于POST請(qǐng)求,表示請(qǐng)求攜帶的數(shù)據(jù),必須轉(zhuǎn)換成字符串類型才可以發(fā)送請(qǐng)求。
2、使用GET還是POST?
和POST相比,GET更簡(jiǎn)單而且更快,大部分情況下使用的都是GET請(qǐng)求,默認(rèn)請(qǐng)求類型也是GET,POST請(qǐng)求適用于以下情況:
- 無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫(kù))
- 向服務(wù)器發(fā)送大量數(shù)據(jù)(數(shù)據(jù)量大使用POST方便,因?yàn)镻OST沒有數(shù)據(jù)類限制)
- 發(fā)送包含未知字符的用戶輸入時(shí),POST比GET更穩(wěn)定也更可靠。
帶參數(shù)的GET、POST請(qǐng)求實(shí)例:
//GET請(qǐng)求 xhr.open("GET","/Login?username=root&password=root",true); xhr.send(); //POST請(qǐng)求 xhr.open("POST","/Login",true); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//向請(qǐng)求添加HTTP頭,固定寫法。 xhr.send("username=root&password=root");3、true(異步)還是false(同步)?
下面給大家介紹一個(gè)場(chǎng)景,可以更好的理解同步和異步的區(qū)別:
一個(gè)人在網(wǎng)上購(gòu)買了一個(gè)東西,如果他一直在家等,在這個(gè)期間,老板讓他去上班不去,一直等到快遞到了之后才去干其他的事情,這就是同步;如果他先去上班,等到快遞到了再去拿,這就是異步。
同步和異步的區(qū)別就是如此:是一直等待一個(gè)請(qǐng)求完成才去干別的事情還是在請(qǐng)求未完成時(shí)就去干別的事情等待請(qǐng)求完成。
- XMLHttpRequest對(duì)象如果要用戶Ajax的話,必須使用異步請(qǐng)求,即async設(shè)置為true
async = true
當(dāng)使用異步請(qǐng)求時(shí),請(qǐng)規(guī)定在相應(yīng)處于onreadystatechange事件中的就緒狀態(tài)時(shí)執(zhí)行的函數(shù),實(shí)例如下:
xhr.onreadystatechange=function() { if (xhr.readyState==4 && xhr.status==200) { document.getElementById("myDiv").innerHTML=xhr.responseText; } } xhr.open("GET","/GetInfo",true); xhr.send();readyState和status
async = false
在發(fā)送同步請(qǐng)求時(shí),請(qǐng)不要寫onreadystatechange函數(shù),直接把代碼放在send方法下面即可
xhr.open("GET","/GetInfo",false); xhr.send(); document.getElementById("myDiv").innerHTML=xhr.responseText;?
轉(zhuǎn)載于:https://www.cnblogs.com/guo-xu/p/10506931.html
總結(jié)
以上是生活随笔為你收集整理的Ajax学习系列——向服务器发送请求的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZJOI 2017 线段树
- 下一篇: 方法和集合