jquery的get方式的ajax方法帶參數的那種會出現獲取到的參數是亂碼的解決

直接給出的解決辦法是採用post方式;網上各種改編碼的方法好像都是浮雲,因爲最後發現這個壓根或頁面編碼無關,他屬於瀏覽器方面的措施。

 

下面說下原因吧:

 

下面是get方式
$.get("test.do", { name: "John", time: "2pm" },
  function(data){
    alert("Data Loaded: " + data);
  });
下面是post方式
$.post("test.do", { name: "John", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });
我們發現,兩個方式幾乎完全一樣,但是帶來的效果卻是不一樣的,當採用get方式的時候,中文會被URL編碼,依據你請求的頁面對你要求的編碼形式,如request.setCharacterEncoding("utf-8");這個是在被請求頁面中的一句話,我們可以理解爲他要求請求頁發送參數使用UTF-8編碼,如果使用jquery時採用GET方式,那麼你在firebug中可以看到中文被編碼,比如說'test="文檔"'採用UTF-8方式會被編碼爲'test=%e6%96%87%e6%a1%a3',你會發現,你使用request.getParameter("test")時,這個值總是亂碼,在網上試了很多方法都未果,後來,我換了post方式,直接搞定,因爲post方式連接後面是不更參數的,參數保存在某以數據結構中,至於在哪裏,我們不用管,但至少我們可以看到,他傳的過程中沒有經過某種編碼格式的URLencode,保存了其完整性,實際上,我們可以發現,某些編碼相互是不能轉換的,你換過去,在換回來就亂碼,因此,最好還是能避免換嗎就避免。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章