Jquery異步提交返回json結果問題

問題:  今天做了一個前臺通過按鈕異步提交到後臺獲取json串的例子並在前臺的回調函數中接受對應的值。但是死命不行,糾結了好久

下面是我的例子:

html部分:

<span style="font-size:18px;"><script type="text/javascript">
	function jqjson(){
		$.post('abcJq',{status:0},function(result){
			alert(result.json1);
			location.reload();
		},'json');
	}
</script>
<input type="button" οnclick="jqjson();" value="jq"></span>

servlet部分:

<span style="font-size:18px;">public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String status = request.getParameter("status");

		out.print("{'json1':'狀態'}");
//		out.print("{json:'狀態'}");
		out.flush();
		out.close();
	}</span>

在servlet中不管是用上面註釋的和不註釋返回的結果都不能進入到回調函數,我就納悶了!


於是我就想這用Gson來封裝下返回json串看可以不:

修改後的servlet

<span style="font-size:18px;">public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String status = request.getParameter("status");
		Gson gson = new Gson(); //這個Gson對象在Gsonjar包中要自己額外導入
		HashMap<String,String> map = new HashMap<String,String>(); 
		
		map.put("json1", "狀態是0"); 
		String json = gson.toJson(map);
		out.print(json);
		
		out.flush();
		out.close();
	}</span>

讓人意外的是這個靜然就可以成功的調用回調函數;返回正確的值。


於是我就調試發現用Gson返回的json串的格式是{"json1":"狀態是0"}

我就很納悶了這個和我自己寫的{'json1':'狀態是0'}有什麼差別,這裏用的是單引號,因爲out.print("{'json1':'狀態'}");

爲的是外面已經用了雙引號了,所以才用單引號。

難道是這個問題,於是我就改寫了寫法servlet如下:

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String status = request.getParameter("status");

		out.print("{\"json\":\"狀態\"}");
		out.flush();
		out.close();
	}
奇蹟般的就可以了,太搞了。












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章