function getTransport() { var versions = { function () { return new XMLHttpRequest(); }, function () { return new ActiveXObject("Microsoft.XMLHTTP"); } }; var request; for (var i = 0, len = versions.length; i < len; i++) { var lambda = versions[i]; try { request = lambda(); break; } catch (e) { } } return request;}function ajaxRequest(url, options) { var request = getTransport(); //建立XMLRequest 對象 if (typeof request == 'undefined') { //拋出異常,說明當期瀏覽器不支持XMLHttpRequest,並退出函數 throw new Error('Your browser does not support XMLHttpRequest'); return; } var url = url; var method = (options.method || 'POST').toUpperCase(); if (method != "GET" && method != 'POST') { method = "POST"; } var parameters = options.parameters || null;//須要提交的參數,默認爲null var headers = options.headers || {}; //須要發送的HTTP頭信息,是一個對象,其成員包含了頭信息的名稱和值的信息 //在請求開始時執行的函數,由用戶指定,默認是一個空函數 var onLoadingEventHandler = options.onLoading || function () { }; //在請求完成時執行的函數,由用戶指定,默認是一個空函數 var onCompleteEventHandler = options.onComplete || function () { }; //在請求成功時執行的函數,由用戶指定,默認是一個空函數 var onSuccessEventHandler = options.onSuccess || function () { }; //在請求失敗時執行的函數,由用戶指定,默認是一個空函數 var onFailureEventHandler = options.onFailure || function () { }; //若是提交方法被指定爲GET,則將parameters 的內容拼接到URL中,並將parameters 設置爲null if (method == "GET" && parameters != null) { if (url.indexOf("?") > -1) { url += '&' + parameters; } else { url += '?' + parameters; } parameters = null; } //初始化XMLHttpRequest對象 request.open(method,url, true); request.setRequestHeader('contentType','application/x-www-form-rulencoded'); for(var name in headers){ request.setRequestHeader(name, headers[name]); } //註冊XMLHttpRequest 對象的readystatechange事件處理函數 request.onreadystatechange = function () { if(request.readyState==1){ //當readystate 等於1時,表示請求開始,將當前XMLHttpRequst對象最爲其參數調用onreadystatechange函數 onLoadingEventHandler(request); } if(request.readyState ==4){ //當readystate 等於4時,表示請求完成,onCompleteEventHandler函數 onCompleteEventHandler(request); if(request.status && request.status >=200 && request.status<300){ //當HTTP 狀態碼大於200小於300時,表示請求成功,這時將當前XMLHttpRequest對象做爲其參數調用onSuccessEventHandler函數 onSuccessEventHandler(request); }else { //不然表示請求失敗,這時將當前XMLHttpRequest 對象做爲其參數調用onFailureHandler函數 onFailureEventHandler(request); } } }; request.send(parameters); //發送請求}