AJAX - $.get( url, [data], [success], [type] )-3传JSON对象

上一篇【http://blog.csdn.net/J080624/article/details/54949773】

提到请求格式为$.get(url,queryString,function(data){}所解决的两种思路;
以及请求格式为$.get(url,{mydata:queryString},function(data){}的两种思路。

本篇讲一下下面格式的后台接收第三种思路:

queryString = $('#editform').serializeArray();//JSON数组
queryString = JSON.stringify(queryString);//string

//querystring为json数组字符串
$.get(url,{mydata:queryString},function(data){}

【1】后台接收方法

因为参数使用{key:value}的形式传参,当然可以使用使用request.getParameter("key");方法来处理。

package com.atgui.ajax.app.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.codehaus.jackson.map.ObjectMapper;

public class GetServlet3 extends HttpServlet {

	/**
	 * queryString = $('#editform').serializeArray();
	   queryString = JSON.stringify(queryString);//string
	   $.get(url,{mydata:queryString},function(data){});
	 */

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

		doPost(request, response);
	}

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

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
	
		String jsonString =request.getParameter("mydata") ;
		System.out.println(jsonString);
		
		
		ObjectMapper objectMapper = new ObjectMapper();
		String resultJson = objectMapper.writeValueAsString(jsonString);
		System.out.println("resultJson ..."+resultJson);
		
		out.print(resultJson);
		out.flush();
		out.close();
	}

}

result as follows :

//启动servlet
getServlet init()....

//解析得到的mydata
[{"name":"username","value":"yanshi02"},{"name":"password","value":"123456"}]

//返回的json
resultJson ..."[{\"name\":\"username\",\"value\":\"yanshi02\"},{\"name\":\"password\",\"value\":\"123456\"}]"

如果直接返回jsonString ,此时typeof data = object ; 那么不需要进行解析可以直接使用data.key获取json 属性;

  • 拿到返回的data

AJAX - $.get( url, [data], [success], [type] )-3传JSON对象_第1张图片

  • 进行JSON遍历!

AJAX - $.get( url, [data], [success], [type] )-3传JSON对象_第2张图片

如果返回resultJson,则需要进行解析 ,才可以遍历json属性!

解析过程参考 前面讲的post。


【2】F12查看浏览器

可以看到浏览器对URL里面的数组进行了编码,但是我后台并没有显示使用URL解码:

		String jsonString2 = URLDecoder.decode(jsonString.toString(),"UTF-8");
		System.out.println(jsonString2);

结果仍然正确!

关于解码编码问题,可以参考我写的系列文章HTTP请求中的编码解码

AJAX - $.get( url, [data], [success], [type] )-3传JSON对象_第3张图片

Tips:

参考post传输参数数据格式为{key : value}可知:无论 get 或者 post ,如果data为{key : value}形式,则都可以使用request.getParameter("key");的形式进行获取。

你可能感兴趣的:(#,AJAX)