jquery的ajax向后台servlet传递json类型的多维数组
后台运行结果: 前台运行结果:



first.jsp:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="jQuery/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function test2(){ //用这种方式组装的json数组是正确的
var testArray = new Array();
for(var i = 0; i < 5; i++) {
var tempArray = new Array();
for(var j = 0; j < 10; j++){
tempArray.push(i*j);
}
testArray.push(tempArray);
}
alert("tempArray=" + tempArray); //用这种方式组装的json数组是正确的
var jsonArr = new Array();
for ( var j = 0; j < 3; j++) {
var jsonObj = {};
jsonObj["gradeId"]=1;
jsonObj["gradeName"]=2;
jsonObj["level"]=3;
jsonObj["boundary"]=4;
jsonObj["status"]=5;
jsonArr.push(jsonObj)
}
alert("jsonArr=" + jsonArr); // 用这种方式组装的json数组是错误的,接收侧只能接收到整个的这个字符串
var employees='[';
for ( var j = 0; j < 5; j++) {
employees+= '{';
employees+="name:";
employees+="zhang";
employees+=",";
employees+="old:";
employees+=30 + j;
employees +='}';
if(j!=4){
employees+=','
};
}
employees+=']';
alert("employees=" + employees); $.ajax({
type:"POST", //请求方式
url:"./testJson", //请求路径
cache: false,
data:{//传参
"name":"zhang3",
"testArray":testArray,
"students": //用这种方式传递多维数组也是正确的
[
{"name":"jackson","age":100},
{"name":"michael","age":51}
],
"employees":employees,
"jsonArr":jsonArr
},
dataType: 'json', //返回值类型
success:function(json){
alert(json[0].username+" " + json[0].password); //弹出返回过来的List对象
alert(json[1].username+" " + json[1].password); //弹出返回过来的List对象
}
});
}
</script>
</head> <body>
<input type="button" name="b" value="TestJson" onclick="test2()"/>
</body> </html>
TestJson.java
package com.zm.servlet; import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class TestJson extends HttpServlet { 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");
System.out.println("into doPost"); //用map来接收request发送过来的多维数组
Map map = request.getParameterMap();
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println("key=" + key );
String[] value = (String[]) map.get(key);
System.out.print("value=");
for(String v:value){
System.out.print(v + " ");
}
System.out.println();
} String sName= request.getParameter("name");//得到ajax传递过来的paramater
System.out.println(sName); PrintWriter printWriter = response.getWriter();
List list = new ArrayList();//传递List Map m=new HashMap();//传递Map
User u1=new User();
u1.setUsername("zah");
u1.setPassword("123");
User u2=new User();
u2.setUsername("ztf");
u2.setPassword("456");
list.add(u1); //添加User对象
list.add(u2); //添加User对象 m.put("u1", u1);
m.put("u2", u2); JSONArray jsonArray2 = JSONArray.fromObject( list );
//把java数组转化成转化成json对象
//JSONObject jsonObject =JSONObject.fromObject(m);//转化Map对象
printWriter.print(jsonArray2);//返给ajax请求
//printWriter.print(jsonObject);//返给ajax请求
printWriter.flush();
printWriter.close();
System.out.println("finish");
}
}
web.xml:
<!-- 测试jquery json-->
<servlet>
<servlet-name>testJson</servlet-name>
<servlet-class>com.zm.servlet.TestJson</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testJson</servlet-name>
<url-pattern>/testJson</url-pattern>
</servlet-mapping>
jquery的ajax向后台servlet传递json类型的多维数组的更多相关文章
- ajax 请求 对json传的处理 Jquery 使用Ajax获取后台返回的Json数据后,页面处理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【转】Jquery 使用Ajax获取后台返回的Json数据后,页面处理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery通过AJAX从后台获取信息并显示在表格上的类
前一阵我写了:<jquery通过AJAX从后台获取信息并显示在表格上,并支持行选中.>现在,我把他们处理了一下,不需要每次写代码了: 具体代码如下: //获取数据并显示数据表格 funct ...
- jquery通过AJAX从后台获取信息并显示在表格上,并支持行选中
不想用Easyui的样式,但是想要他的表格功能,本来一开始是要到网上找相关插件的,但是没找到就开始自己写,没想到这么简单. 后台代码:(这个不重要) public ActionResult GetDi ...
- jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法
jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...
- ajax请求、servlet返回json数据
ajax请求.servlet返回json数据 1.方式一 response.setcontenttype("text/html;charset=utf-8"); response. ...
- jquery的ajax异步请求接收返回json数据
http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...
- 用easyui从servlet传递json数据到前端页面的两种方法
用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...
随机推荐
- reduce + Promise 顺序执行代码
本文地址: http://www.cnblogs.com/jasonxuli/p/4398742.html 下午的太阳晒得昏昏沉沉,和上周五一样迷糊,看一段代码半天没看明白,刚才不知不觉眯了几分钟,醒 ...
- 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代码安装软件
除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者可以方便的通过源代码进行安装.从源码安装软件一般经过软件配置.编译软件.执 ...
- 【leetcode】354. Russian Doll Envelopes
题目描述: You have a number of envelopes with widths and heights given as a pair of integers (w, h). One ...
- Bootstrap学习笔记(一) 排版
Bootsrap是一款优秀的前端开发框架,我从慕课网上开始学习Bootstrap,以下我学习过程中的一些笔记及代码. 首先学习排版: 从Bootstrap网站下载Bootstrap3中文文档(V3.3 ...
- iOS 非ARC基本内存管理系列 3-循环retain和@class
1.@class 使用场景:对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类: 可以看出Person和Card互相引用,此时如果使用#import编译报错!因此当使用@class在两个类中相 ...
- [转]PHP错误日志
对 于PHP开发者来说,一旦某个产品投入使用,应该立即将display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息 而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ...
- jQueryr .on方法解析
.On() 其实.bind(), .live(), .delegate()都是通过.on()来实现的,.unbind(), .die(), .undelegate(),也是一样的都是通过.off()来 ...
- 写了个Linux包过滤防火墙
花几天写了个so easy的Linux包过滤防火墙,估计实际意义不是很大.防火墙包括用户态执行程序和内核模块,内核模块完全可以用iptable代替.由于在编写的过程一开始写的是内核模块所以就直接用上来 ...
- php字符串首字母转换大小写的实例分享
php中对字符串首字母进行大小写转换的例子. in: 后端程序首字母变大写:ucwords() <?php $foo = 'hello world!'; $foo = ucwords($foo) ...
- Flex读文本文件
布局: <s:Group id="> <s:Rect width="100%" height="100%"> <s:fi ...