ajax技術能夠向伺服器請求額外的資料而無需解除安裝頁面。其核心技術是xmlhttprequest物件(xhr)。
ie7之前的舊版本通過msxml庫中的activex物件實現。而ie7及之後的瀏覽器支援xmlhttprequest建構函式
可以做相容性的createxhr();
function createxhr()
//如果不支援xmlhttprequest,就檢查是否支援activexobject
else if(typeof activexobject !="undefined")
else
注意:瀏覽器有時候會錯誤的報告204狀態,ie的xhr的activex會將201設定為1223,ie中原生的xhr會將204規範為200,而opera或將status設定為0。
請求/響應的活動階段
可以檢測xhr物件的readystate屬性來求得請求/響應的當前階段
這些階段的改變會觸發readystatechange事件,可以根據該事件來檢測readystate
//onreadystatechange事件要在open之前指定,保證跨域瀏覽器的相容性
xhr.onreadystatechange=function()
else
}} xhr.open("get","",true);
xhr.send(null);
可以用xhr.abort()在響應前取消非同步請求,
這個方法會使xhr停止觸發時間,再也不允許訪問與響應有關的物件屬性,這個方法在請求終止後還會對xhr解引,不建議xhr重用,會影響記憶體。
// 不要使用瀏覽器正常字段,會影響瀏覽器響應
xhr.setrequestheader("myheader","myvalue");
xhr.send(null);
var myheader=xhr.getresponseheader('content-type');
var allheader=xhr.getallresponseheader();
get請求常用於向伺服器查詢某些資訊。
//這裡的查詢字串需要正確的編碼
xhr.open("get","example.php?name=name1&age=age1",true);
get請求經常發生的錯誤是查詢字串的格式問題,查詢字串中的每個引數名和值都需要encodeuricomponent()來先進行編碼。
/**
* [對查詢字串進行編碼]
* @param url [要新增的引數的url]
* @param name [引數名]
* @param value [引數值]
*/function addurlparam(url,name,value)
使用這個函式可以保證查詢字串的格式良好,能可靠的用於xhr物件
post請求用於向伺服器傳送應該被儲存的資料,把資料作為請求主體提交。
post請求可以提交xml文件
xhr.open("post","example.php",true)
xhr.send(data);
預設情況下,伺服器對post請求和web表單提交不會一視同仁。如果需要提交表單,可以使用如下**
/**
* post提交表單
* @return [description]
*/function submitdata()
else
}} xhr.open("post","example.php",true);
//設定頭部資訊為表單提交時的內容
var form=document.getelementbyid("user-info");
//將表單資料序列化
xhr.send(serialize(form));
}
unity知識歸納
unity 之 場景有光照但是模型光照顯示較暗 在頂部選單 window lighting settings,開啟燈光設定,原來是 auto generate 沒有勾選,所以光照不能自動進行光照烘焙 可以讓兩個物體合併呼叫方法 mesh combine unity 碰撞檢測 box collider...
知識歸納 自律
參考 自律一點也不難 知乎專欄 該問題可分解為 什麼影響了我們的行為?什麼行為符合長期利益?如何具體地運用前兩個問題的回答來指導自律?就像 輸入 模型 輸出 行為的產生也遵循類似的模式 資訊 大腦 行為 因此,存在兩個控制行為的思路 控制資訊的輸入 調整大腦的狀態 2.1控制資訊的輸入 任何資訊輸入...
CSS知識歸納 2
每個元素都有其對應的盒模型 border邊框,border width border style solid實線 dashed虛線 dotted點狀 double雙線 border color padding內邊距 margin外邊框,可以為賦值,使元素內容區域向外展開 元素間上下外邊距會合併,取兩...