json格式的数据传递已经红遍全球,JQuery的AJAX功能自然也可以对其进行进行传递。但是一般的传递都是使用GET方式进行的传递,如果内容不多,数据量不大那还是不错的。但是如果数据量比较大,使用get传递就不太适合,我们自然而然的想到了POST传递。
网上很多的说法都是使用流来读取请求流中的POST过来的数据。对于使用SSH越来越多的今天,写个doPost方法来接收数据其实并不合适,而我们更多的使用的是Action来进行数据的接收,那Struts中的action如何收到post过来的数据呢?使用网上的流的说法,告诉你,你是接收不到的,具体如何做,往下看。
先说下工具:JQuery1.2.6+json2.js+Struts1.3+org.son包+jdk1.5
然后我们来看下页面的内容:
<textarea class="xhtml" cols="50" rows="15" name="code"><%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<mce:script type="text/javascript" src="javascript/jquery-1.2.6.min.js" mce_src="javascript/jquery-1.2.6.min.js"></mce:script>
<mce:script type="text/javascript" src="javascript/json2.js" mce_src="javascript/json2.js"></mce:script>
<mce:script type="text/javascript" src="javascript/tt.js" mce_src="javascript/tt.js"></mce:script>
<title></title>
</head>
<body>
<form>
<div>
<input type="text" id="roleId" value="112233" name="roleId" />
<label><input type="checkbox" value="0" checked="checked" name="type" /></label>
<label><input type="checkbox" value="1" checked="checked" name="type" /></label>
<select id="beginYear" name="beginYear"><option value="2008">2008</option></select>
<select id="beginWeek" name="beginWeek"><option value="51">51</option></select>
<select id="endYear" name="endYear"><option value="2009">2009</option></select>
<select id="endWeek" name="endWeek"><option value="2">2</option></select>
<input type="text" id="productList" value="123,124,125,126" name="productList" />
<select id="dealerType" multiple="multiple" name="dealerType">
<option value="">all</option><option value="1">mobo</option><option value="2">sales</option>
</select>
<a href="#" mce_href="#" id="go">text</a>
</div>
</form>
</body>
</html></textarea>
页面元素不算太少,要提取里面的内容,并将他们传递到action中。下面是tt.js的内容:
<textarea class="javascript" cols="50" rows="15" name="code">jQuery(function($) {
$("#go").click(function(){
var jsonTest = {
roleId:$("#roleId").val(),
type:$("label input:checked").map(function(){
return $(this).val();
}).get(),
beginYear:$("#beginYear").val(),
beginWeek:$("#beginWeek").val(),
endYear:$("#endYear").val(),
endWeek:$("#endWeek").val(),
productList:$("#productList").val().split(','),
dealerType:$("#dealerType").val().join(',')
};
alert(JSON.stringify(jsonTest));
$.ajax({
type: "POST",
url: "json.do?method=list",
data:{newData:JSON.stringify(jsonTest)},
dataType:"json",
success:function(){
alert(1);
}
});
});
});</textarea>
执行后,会出现个alert框,里面显示了将对象转换成json后的字符串,如图:
从图上可以看出,我们需要的内容都已经成为了json格式的。下面就会执行JQuery的ajax方法了,Data属性的内容嘛,当然就是转换过的jsonTest了,但是,最重要的东西也出现了:我将转换后的jsonTest又进行了包装,并且是包装在了一个key为newData的json字符串里面了。
各位朋友们,你们在action中取不到流,并不是json字符串没有传递过来,而是,你找错地方了。如果不相信,你可以写上你自己的action,然后在action中写上以下代码:
<textarea class="java" cols="50" rows="15" name="code"> Enumeration<String> e = request.getParameterNames();
while(e.hasMoreElements()){
System.out.println(e.nextElement());
}</textarea>
怎么样,是不是发现传过来的json安安静静的出现在了控制台上?对的,它是以数据的name传过来的,这也就是为何需要再对其进行一次包装的原因了。下面的东西嘛,就好办了。在action中使用request.getParament即可取到心仪已久的json格式字符串了。
怎么?你认为是get方式传过来的?怕浏览器长度限制?那你自己去试试看吧,我试过20几W的长度下,FF和IE都没有问题,难道你的数据还能再长?没事,多长都可以的。
- 大小: 15.8 KB
分享到:
- 2009-01-14 23:33
- 浏览 2539
- 评论(0)
- 论坛回复 / 浏览 (0 / 9283)
- 查看更多
相关推荐
Struts 1.3 +JQuery+Json Post传值 由于网上关于这个的资料很少,现整理出来,方便大家学习. 关于Json的优势,网上的评价都很高,对于处理复杂的数据相对于处理xml来说要好很多,更多关于这方面的知识读者可以到网上...
jquery+struts2实现文件上传,没有jar包。下载来只需引入struts2jar就可以了
NULL 博文链接:https://tanzhengping11.iteye.com/blog/619150
Jquery+struts2上传图片,制作进度条等示例,还有Jquery+Json+Struts实现Ajax技术,还有图形处理技术等,虽然很少,但都有重点突出,由于我也是学习,所以代码不是很简洁,对想学习交流的朋友非常合适
json+jquery+struts2+hibernate+spring 实现的小型bbs系统,这个提供包 ,很不错的下载后,好好徐希一下吧
通过jQuery获取表单数据,封装到JSON对象,再把JSON对象转为字符串传到Action,接到数据后,再把JSON字符串变为JSON对象,通过JSON的键,取出数据,通过调用数据库返回数据封装在JSON,打印出数据,然后在客户端接收...
struts2 json jquery ajax实现用户登陆及业面跳转
SSH +jquery+json做的Ajax级联操作 简练清晰 容易理解 完全可以拷贝引用
1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、com.morningstar.utility.WSUtility为调用WebService的客户端代码,在调用这个WebService返回...
基于Jquery+Ajax+Json实现分页显示附效果图
NULL 博文链接:https://taobeibei.iteye.com/blog/600159
Struts1.3+Hibernate3.2+Spring2.5+JQuery1.3
DWR+jquery2.x+easyUI1.3.x开发富客户端应用
JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...
struts2+spring+hibernate+jquery+json 以前没有做过此类的东西终于有时间来试试 可以方便学习
jquery+struts2实现异步刷新,是个不错的实例,可以结合到项目中使用,简单易懂。
NULL 博文链接:https://lw671579557.iteye.com/blog/1946083
Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON
自己整理的jquery+json+struts2异步传输的例子,包括异步提交form,异步传输json对象。
NULL 博文链接:https://gongchangming.iteye.com/blog/421351