2013-05-09 59 views
0

我的web應用程序有一些問題,如下所示:阿拉伯字符顯示像?????雖然通過jQuery Ajax調用

1)我通過Jquery ajax調用控制器並獲取JSON格式的響應數據。

2)該控制器觸擊數據庫並從數據庫中檢索數據,檢索到的數據是阿拉伯文格式。

3)然後我填充這是在jsp頁面構建在jQuery的對話框中的數據,但這些數據是格式不正確

================= =====阿賈克斯呼叫======================

$.ajax({ 

     url: "Login/getUserData.html", 
     type: "GET", 
     cache: false, 
     async: false, 
    dataType:"json", 
contentType: "application/json; charset=utf-8", 
    success : function(data) { 
    jQuery.parseJSON(data); 
    if(data!=null) 
     { 
          //*****************Start***************  
          $("#post").dialog({ 
           height : 500, 
           width : 550, 
           resizable: false, 
           modal : true, 
           open: function(){ 
            $('#cName').val(data.fname+" "+data.lname);  $('#cEmail').val(data.email);  
            $('#cNo').val(data.contact);  
            $('#dateL').val(data.currentDate); 
            } 
          }); 
          //*****************End***************  
         } 
         else 
         { 
          $("#notLoggedInMessageDialog").dialog('open'); 
         } 
        }, 
        error:function(){ 
         alert("Error occured"); 
        }}); 

     =====================LoginController.java ================= 
@Controller 
@RequestMapping("/Login/") 
@Scope("request") 
public class LoginController { 

/* 
* method to get log-id user's data 
*/ 
@RequestMapping(value = "/getUserData", method = RequestMethod.GET, produces = {"application/json; charset=UTF-8"}) 
@ResponseBody 
public String getUserData(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { 
    System.out.println("================inside LoginController.getUserData()============="); 
    UserModel uModel = (UserModel) request.getSession().getAttribute("user"); 
    request.setCharacterEncoding("UTF-8"); 
    response.setContentType("text/html;charaset=UTF-8"); 
    String user = null; 
    if (uModel != null) { 
     UserModel newUserModel = new UserModel(); 
     newUserModel.setuId(uModel.getuId()); 
     newUserModel.setContact(uModel.getContact()); 
     String email = new String(uModel.getEmail().getBytes("UTF-8")); 
     System.out.println(uModel.getEmail() + " encoded email = " + email); 
     newUserModel.setEmail(uModel.getEmail()); 
     newUserModel.setFname(uModel.getFname()); 
     newUserModel.setLname(uModel.getLname()); 
     newUserModel.setEmailTemplate(uModel.getEmailTemplate()); 
     String current_Date = new SimpleDateFormat("MM/dd/yyyy").format(new Date()); 
     newUserModel.setCurrentDate(current_Date); 
     Gson gson = new GsonBuilder().setDateFormat("MM/dd/yyyy").create(); 
     user = gson.toJson(newUserModel); 
     System.out.println("user = " + user); 
    } 
    return user; 
} 
} 

====================postlisting.jsp==================== 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%> 
<!DOCTYPE html> 
<% 
String direction = (String) request.getAttribute("data"); 
request.setCharacterEncoding("UTF-8"); 
response.setContentType("text/html;charaset=UTF-8"); 
%> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
    <div> 
     <fieldset style="border: none;"> 
      <center> 
       <legend> 
        <b><"label.extruder.myProfile.newListing.basicinfo"/></b> 
       </legend> 
       <table id="f1" style="text-align: justify;"> 
        <tr> 
         <td ><"label.extruder.myProfile.newListing.cntName"/>:*</td> 
         <td ><input type="text" style="width: 100px;" id="cName"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.cntEmail"/>:*</td> 
         <td><input type="text" id="cEmail" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.cntNo"/>:*</td> 
         <td><input type="text" id="cNo" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.dateL"/>:*</td> 
         <td><input type="text" id="dateL" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.dateA"/>:*</td> 
         <td><input type="text" id="dateA" style="width: 100px;"/></td> 
        </tr> 
        <tr> 
         <td><"label.extruder.myProfile.newListing.rent"/>:*</td> 
         <td><input type="text" id="rent" style="width: 100px;" /></td> 
        </tr> 
         </tr> 
       </table> 
       </center> 
     </fieldset> 
      </div> 
    </body> 
</html> 

可以任何機構解決這個問題??在頭塊

+1

您預計將與代碼(而非圖片)在這裏發表完整和獨立的問題,有可能。你不應該強迫人們點擊外部鏈接來獲取基本信息。 – 2013-05-09 07:46:21

回答

1

使用元標籤

<meta http-equiv="content-type" content="text/html";charset="utf-8" /> 

希望它可以幫助你

+0

謝謝,但它不起作用 – user1348237 2013-05-09 12:09:11

0

我已經改變返回類型爲void解決了這個問題,並 通過在控制器中添加一些代碼如下:

@Controller 
@RequestMapping("/Login/") 
@Scope("request") 
public class LoginController { 

/* 
* method to get log-id user's data 
*/ 
@RequestMapping(value = "/getUserData", method = RequestMethod.GET, produces =   {"application/json; charset=UTF-8"}) 
@ResponseBody 
public void getUserData(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { 
System.out.println("================inside LoginController.getUserData()============="); 
UserModel uModel = (UserModel) request.getSession().getAttribute("user"); 
String user = null; 
if (uModel != null) { 
    UserModel newUserModel = new UserModel(); 
    newUserModel.setuId(uModel.getuId()); 
    newUserModel.setContact(uModel.getContact()); 
    String email = new String(uModel.getEmail().getBytes("UTF-8")); 
    System.out.println(uModel.getEmail() + " encoded email = " + email); 
    newUserModel.setEmail(uModel.getEmail()); 
    newUserModel.setFname(uModel.getFname()); 
    newUserModel.setLname(uModel.getLname()); 
    newUserModel.setEmailTemplate(uModel.getEmailTemplate()); 
    String current_Date = new SimpleDateFormat("MM/dd/yyyy").format(new Date()); 
    newUserModel.setCurrentDate(current_Date); 
    Gson gson = new GsonBuilder().setDateFormat("MM/dd/yyyy").create(); 
    user = gson.toJson(newUserModel); 

    //new code added 
response.setCharacterEncoding("utf-8"); 
    response.getWriter().write(user); 
} 
return user; 
} 
} 
0

請使用過濾器進行編碼web.xml文件

<filter> 
<filter-name>encodingFilter</filter-name> 
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
<init-param> 
    <param-name>encoding</param-name> 
    <param-value>UTF-8</param-value> 
</init-param> 
<init-param> 
    <param-name>forceEncoding</param-name> 
    <param-value>true</param-value> 
</init-param> 

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>