ajax
Web的運(yùn)作原理:一次HTTP請求對應(yīng)一個(gè)頁面。
如果仔細(xì)觀察一個(gè)Form的提交橘茉,你就會發(fā)現(xiàn),一旦用戶點(diǎn)擊“Submit”按鈕姨丈,表單開始提交畅卓,瀏覽器就會刷新頁面,然后在新頁面里告訴你操作是成功了還是失敗了蟋恬。如果不幸由于網(wǎng)絡(luò)太慢或者其他原因翁潘,就會得到一個(gè)404頁面。
AJAX請求是異步執(zhí)行的歼争,也就是說拜马,要通過回調(diào)函數(shù)獲得響應(yīng)。
五步使用法:
1.創(chuàng)建XMLHTTPRequest對象
2.使用open方法設(shè)置和服務(wù)器的交互信息
3.設(shè)置發(fā)送的數(shù)據(jù)沐绒,開始和服務(wù)器端交互
4.注冊事件
5.更新界面
例子post請求
//創(chuàng)建異步對象
var xhr = new XMLHttpRequest();
//設(shè)置請求的類型及url
//post請求一定要添加請求頭才行不然會報(bào)錯(cuò)
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.open('post', '02.post.php' );
//發(fā)送請求
xhr.send('name=fox&age=18');
xhr.onreadystatechange = function () {
// 這步為判斷服務(wù)器是否正確響應(yīng)
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
}
};
如果你想把標(biāo)準(zhǔn)寫法和IE寫法混在一起俩莽,可以這么寫:
var request;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else {
request = new ActiveXObject('Microsoft.XMLHTTP');
}
瀏覽器同源問題解決
一是通過Flash插件發(fā)送HTTP請求,這種方式可以繞過瀏覽器的安全限制乔遮,但必須安裝Flash扮超,并且跟Flash交互。不過Flash用起來麻煩申眼,而且現(xiàn)在用得也越來越少了瞒津。
二是通過在同源域名下架設(shè)一個(gè)代理服務(wù)器來轉(zhuǎn)發(fā),JavaScript負(fù)責(zé)把請求發(fā)送到代理服務(wù)器:
第三種方式稱為JSONP括尸,它有個(gè)限制巷蚪,只能用GET請求,并且要求返回JavaScript濒翻。這種方式跨域?qū)嶋H上是利用了瀏覽器允許跨域引用JavaScript資源