js ajax 相容多瀏覽器 get post 解決亂碼 響應過程全齊了__js

來源:互聯網
上載者:User
//將JSON對象解析為字串,再替換相應符號  function JSONStringify(obj) {return JSON.stringify(obj).replace(/"|{|}/g, "").replace(/:/g, "=").replace(/,/g, "&");}function getServerDataUseAjax(method, url, params) {//開始初始化XMLHttpRequest對象var http_request = false;if (window.XMLHttpRequest) { //Mozilla 瀏覽器http_request = new XMLHttpRequest();if (http_request.overrideMimeType) {//設定MiME類別http_request.overrideMimeType('text/xml');}} else if (window.ActiveXObject) { // IE瀏覽器try {http_request = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {http_request = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}}}if (!http_request) { // 異常,建立對象執行個體失敗window.alert("不能建立XMLHttpRequest對象執行個體.");return false;}//不同請求方式的請求過程不同  //開發過程中 80%的開發使用 get 方式請求if (method.toLowerCase() == "get") {//這裡加上時間戳記是為瞭解決低版本ie瀏覽器緩衝問題//另:這裡額外調用了一個方法對傳入的JSON對象進行瞭解析並字串重組url += "?" + JSONStringify(params) + "×tamp"+ new Date().getTime();//如果不是IE瀏覽器就執行            // if(navigator.userAgent.indexOf("MSIE")<=0){             //   netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");           // }//注意這裡是兩次encodeURI()http_request.open(method, encodeURI(encodeURI(url)), true);// 處理返回資訊的函數http_request.onreadystatechange = function () {if (http_request.readyState != 4) { // 判斷對象狀態//id loading_inserHTML// document.getElementById('MerchName').innerHTML="正在載入資料……"; //alert(4);} else {if (http_request.status == 200 || http_request.status == 0) { // 資訊已經成功返回,開始處理資訊var strHTML = http_request.responseText;//ok_innerHTML//document.getElementById('MerchName').innerHTML=strHTML;alert(strHTML);} else { //頁面不正常alert("您所請求的頁面有異常。");}}};//開始發送請求http_request.send(null);} else {if (method.toLowerCase() == "post") {if (method.toLowerCase() == "post") {http_request.open(method, url, true);http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");// 處理返回資訊的函數http_request.onreadystatechange = function () {if (http_request.readyState != 4) { // 判斷對象狀態// document.getElementById('MerchName').innerHTML="正在載入資料……"; //alert(4);} else {if (http_request.status == 200 || http_request.status == 0) { // 資訊已經成功返回,開始處理資訊var strHTML = http_request.responseText;//document.getElementById('MerchName').innerHTML=strHTML;alert(strHTML);} else { //頁面不正常alert("您所請求的頁面有異常。");}}};//開始發送請求http_request.send(JSONStringify(params));} else {//http請求類別參數錯誤    window.alert("http請求類別參數錯誤..");return false;}}}}function test() {//{name:'jack',age:88}//注意這裡給的參數對象是JSON對象格式getServerDataUseAjax("get", "test", {name : "天上人間",age : 88});}
使用時需要 伺服器端解碼  URLDecoder.decode(request.getParameter("name"), "UTF-8")
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.