jQuery AJAX 請求亂碼 返回亂碼

來源:互聯網
上載者:User

原文地址:http://blog.csdn.net/hongweigg/article/details/6756278

 

1. jQuery AJAX 請求,後台收到為亂碼

可以顯式設定contentType的編碼為utf-8, 後台一般都能正常解碼例如:

[javascript]
view plaincopyprint?
  1. contentType: "application/x-www-form-urlencoded; charset=utf-8",  
contentType: "application/x-www-form-urlencoded; charset=utf-8",

 

[javascript]
view plaincopyprint?
  1. jQuery(form).ajaxSubmit({  
  2. url: "doLogin?user=a",  
  3. type: "post",  
  4. dataType: "json",  
  5. contentType: "application/x-www-form-urlencoded; charset=utf-8",  
  6. success: showLoginResponse  
  7. });   
jQuery(form).ajaxSubmit({url: "doLogin?user=a",type: "post",dataType: "json",contentType: "application/x-www-form-urlencoded; charset=utf-8",success: showLoginResponse}); 

如果不加contentType: "application/x-www-form-urlencoded; charset=UTF-8",  而使用escape(),則會出現

post 主體包含的位元組比內容長度指定的位元組要少

的錯誤.

 

2.  jQuery AJAX 返回亂碼

你是否發現無論你怎麼設定編碼, 用戶端收到的資料總是亂碼呢, 請看下面的例子,你發現有什麼問題嗎?

[java]
view plaincopyprint?
  1. void saveTempKind(HttpServletRequest req, HttpServletResponse resp)  
  2.             throws ServletException, IOException {   
  3.  PrintWriter pw = resp.getWriter();  
  4.  resp.setContentType("text/text;charset=GBK");   
  5.  try {  
  6.   //DO PROCESS 
      
  7.   pw.write("成功");  
  8.  }catch(Exception e){  
  9.   pw.write("失敗");  
  10.  }  
  11. }   
void saveTempKind(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {  PrintWriter pw = resp.getWriter(); resp.setContentType("text/text;charset=GBK");  try {  //DO PROCESS   pw.write("成功"); }catch(Exception e){  pw.write("失敗"); }} 

問題在於resp.setContentType("text/text;charset=GBK");
語句應該在

[javascript]
view plaincopyprint?
  1. PrintWriter pw = resp.getWriter();  
PrintWriter pw = resp.getWriter();

之前,而不是之後。如果象上例這樣,無論你怎麼設定response的編碼,前端亂碼的問題都依然如故。 可能的原因是pw在獲得PriintWriter 之前,編碼就已經確定了。所以編碼的聲明應該在擷取PrintWriter對象之前。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.