Return JSON from servlet
IE caches AJAX requests aggressively (more than Firefox, Chrome, and Safari, anyway).Sometimes you need to set cache header controller when request. Like cache:false
. I tried to fix your code like this
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());
I changed your response content-type from application/json; charset=utf8
to just application/json
and that worked.
I was having the same problem. It was working well on Firefox but not on IE...I found out reading this post that my problem was related to the 'Content-Type'. The problem seems that that IE has problem with 'charset=UTF8'. However, if you use 'charset=UTF-8' (with a dash) it is then working!Your Content-Type should then be: 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>