【发布时间】:2012-03-27 14:06:48
【问题描述】:
标签: jquery json internet-explorer jakarta-ee servlets
标签: jquery json internet-explorer jakarta-ee servlets
IE 积极缓存 AJAX 请求(无论如何,超过 Firefox、Chrome 和 Safari)。
有时需要在请求时设置缓存头控制器。喜欢cache:false。我试图像这样修复你的代码
request.setCharacterEncoding("utf8");
//response.setCharacterEncoding("utf8");
response.setContentType("application/json");
PrintWriter out = response.getWriter();
JSONObject jsonObj = (JSONObject) JSONValue.parse(request.getParameter("para"));
System.out.println(jsonObj.get("message"));
JSONObject obj = new JSONObject();
obj.put("message", "hello from server");
out.print(obj.toString());
我将您的回复内容类型从 application/json; charset=utf8 更改为 application/json 并且有效。
【讨论】:
我遇到了同样的问题。它在 Firefox 上运行良好,但在 IE 上却不行... 我发现阅读这篇文章我的问题与“内容类型”有关。问题似乎是 IE 有 'charset=UTF8' 的问题。但是,如果您使用 'charset=UTF-8'(带有破折号),它就可以工作了! 你的 Content-Type 应该是:application/json;charset=UTF-8
【讨论】:
<%
Gson gs = new Gson();
BeanHelpBH bh = new BeanHelpBH();
List<Baihatmoi> lst = bh.getTenbaihatbyName("Ao moi ca mau");
String bha = gs.toJson(lst);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
out.print(bha);
out.flush();
%>
script :
<script>
$(document).ready(function(){
$.get('jsontest.jsp',function(data){
[enter image description here][1] console.log(data);
});
});
</script>
【讨论】:
使用 Gson 你可以发送 json 响应
@WebServlet(urlPatterns = {"/jsonResponse"})
public class JsonResponse extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
Student student = new Student(12, "Ram Kumar", "Male", "1234565678");
Subject subject1 = new Subject(1, "Computer Fundamentals");
Subject subject2 = new Subject(2, "Computer Graphics");
Subject subject3 = new Subject(3, "Data Structures");
Set subjects = new HashSet();
subjects.add(subject1);
subjects.add(subject2);
subjects.add(subject3);
student.setSubjects(subjects);
Address address = new Address(1, "Street 23 NN West ", "Bhilai", "Chhattisgarh", "India");
student.setAddress(address);
Gson gson = new Gson();
String jsonData = gson.toJson(student);
PrintWriter out = response.getWriter();
try {
out.println(jsonData);
} finally {
out.close();
}
}
}
【讨论】: