大数据WEB阶段(十一)Ajax、URL编码
生活随笔
收集整理的這篇文章主要介紹了
大数据WEB阶段(十一)Ajax、URL编码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Ajax與使用Ajax時產(chǎn)生的亂碼問題—URL編碼
(一)Ajax
一、Ajax詳解
JS方法實現(xiàn)Ajax:
//1 創(chuàng)建XMLHttpRequest對象function ajaxFunction(){var xmlHttp;try{ // Firefox, Opera 8.0+, SafarixmlHttp=new XMLHttpRequest();}catch (e){try{// Internet ExplorerxmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){}}}return xmlHttp;}//2.服務器端向客戶端進行響應(注冊監(jiān)聽)var data = null;var xhr = ajaxFunction();xhr.onreadystatechange=function(){if(xhr.readyState==4){if(xhr.status==200||xhr.status==304){data = xhr.responseText;}}}readyState 屬性表示Ajax請求的當前狀態(tài)。它的值用數(shù)字代表。0 代表未初始化。 還沒有調(diào)用 open 方法1 代表正在加載。 open 方法已被調(diào)用,但 send 方法還沒有被調(diào)用2 代表已加載完畢。send 已被調(diào)用。請求已經(jīng)開始3 代表交互中。服務器正在發(fā)送響應4 代表完成。響應發(fā)送完畢xhr.status常用狀態(tài)碼及其含義:404 沒找到頁面(not found)403 禁止訪問(forbidden)500 內(nèi)部服務器出錯(internal service error)200 一切正常(ok)304 沒有被修改(not modified)(服務器返回304狀態(tài),表示源文件沒有被修改 )xhr.responseText 服務器發(fā)回的響應結(jié)果,字符串xhr.responseXML 服務器返回的響應結(jié)果,XML對象//3 客戶端與服務器端建立連接* 使用的是XMLHttpRequest對象的open(method, url, asynch)方法* * method:請求類型,類似 “GET”或”POST”的字符串。* * url:路徑字符串,指向你所請求的服務器上的那個文件。可以是絕對路徑或相對路徑。* * asynch:表示請求是否要異步傳輸,默認值為true(異步)。xhr.open("GET","../testServlet?timeStamp="+new Date().getTime()+"&c=19",true);//4 客戶端向服務器端發(fā)送請求* * 使用的是XMLHttpRequest對象的send()方法* * 如果請求類型是GET方式的話,使用send()方法發(fā)送請求數(shù)據(jù),服務器端接收不到* * 該步驟不能被省略,只能寫成xhr.send(null);*/xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");~GET方式:xhr.send(null); //xhr.send(null);~POST方式:如果請求類型是POST的話,需要設置請求首部信息xhr.send("a=7&b=8");JQuery方式實現(xiàn)Ajax
JQuery詳解:http://blog.csdn.net/chou_out_man/article/details/78585875
$.ajax({type: "POST",url: "some.php",data: "name=John&location=Boston",success: function(msg){alert( "Data Saved: " + msg );} });$.get("test.php?name=John&location=Boston", function(data){alert("Data Loaded: " + data); });$.post("test.php",{"name":"John","location":"Boston"}, function(data){alert("Data Loaded: " + data); })(二)使用Ajax時產(chǎn)生的亂碼問題—URL編碼
一、詳解
URL編碼過程:
對于ISO-8859-1中沒 有的字符 , 先按照制定碼表將字符轉(zhuǎn)換為字節(jié)
中 111100001110101010101100 國 110101011011010100110001再將每個字節(jié)轉(zhuǎn)換為16進制表示的方式
中 11110000 -> f011101010 -> ea10101100 -> ac 國 11010101 -> d510110101 -> b500110001 -> 31再在每一個之前加上% ,就得到了 URL編碼格式
中 11110000 -> %f011101010 -> %ea10101100 -> %ac 國 11010101 -> %d510110101 -> %b500110001 -> %31 中國 ->%F0%EA%AC%D5%B5%31但是在一些特別的場景下 , 例如:AJAX發(fā)送數(shù)據(jù)時 , 瀏覽器不再自動幫我們編碼 , 需要我們手動進行URL編解碼 操作
java中進行URL編解碼:URLEncoder.encoder(str , encode);//編碼URLDecoder.decode(str , encode);//解碼 jq中進行URL編解碼:$.param(myObject);總結(jié)
以上是生活随笔為你收集整理的大数据WEB阶段(十一)Ajax、URL编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据WEB阶段 (十)Response
- 下一篇: 大数据WEB阶段(十二)会话技术、Coo