使用JQuery+Struts1.3实现JSON的post传递
来源:互联网 发布:国投瑞银基金知乎 编辑:程序博客网 时间:2024/06/15 05:08
网上很多的说法都是使用流来读取请求流中的POST过来的数据。对于使用SSH越来越多的今天,写个doPost方法来接收数据其实并不合适,而我们更多的使用的是Action来进行数据的接收,那Struts中的action如何收到post过来的数据呢?使用网上的流的说法,告诉你,你是接收不到的,具体如何做,往下看。
先说下工具:JQuery1.2.6+json2.js+Struts1.3+org.son包+jdk1.5
然后我们来看下页面的内容:
- <%@ 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>
页面元素不算太少,要提取里面的内容,并将他们传递到action中。下面是tt.js的内容:
- 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);
- }
- });
- });
- });
执行后,会出现个alert框,里面显示了将对象转换成json后的字符串,如图:
从图上可以看出,我们需要的内容都已经成为了json格式的。下面就会执行JQuery的ajax方法了,Data属性的内容嘛,当然就是转换过的jsonTest了,但是,最重要的东西也出现了:我将转换后的jsonTest又进行了包装,并且是包装在了一个key为newData的json字符串里面了。
各位朋友们,你们在action中取不到流,并不是json字符串没有传递过来,而是,你找错地方了。如果不相信,你可以写上你自己的action,然后在action中写上以下代码:
- Enumeration<String> e = request.getParameterNames();
- while(e.hasMoreElements()){
- System.out.println(e.nextElement());
- }
怎么样,是不是发现传过来的json安安静静的出现在了控制台上?对的,它是以数据的name传过来的,这也就是为何需要再对其进行一次包装的原因了。下面的东西嘛,就好办了。在action中使用request.getParament即可取到心仪已久的json格式字符串了。
怎么?你认为是get方式传过来的?怕浏览器长度限制?那你自己去试试看吧,我试过20几W的长度下,FF和IE都没有问题,难道你的数据还能再长?没事,多长都可以的。
- 使用JQuery+Struts1.3实现JSON的post传递
- 使用JQuery+Struts1.3实现JSON的post传递
- jquery post请求来实现参数传递
- jQuery Ajax 调用 ASP.NET WebServices + (POST)->JSON 数据传递,一种开发高效的模式
- 使用Struts2的JSON插件来实现JSON数据传递
- java servlet使用jquery 的ajax交互 传递json对象
- 使用jQuery POST提交数据返回的JSON是字符串不能解析为JSON对象
- 使用jQuery POST提交数据返回的JSON是字符串不能解析为JSON对象
- 使用jQuery POST提交数据返回的JSON是字符串不能解析为JSON对象
- JQuery处理JSON(Struts1.2)
- Struts2+jQuery,使用ajax传递JSON数据
- struts1+json+jquery实现ajax提交,获取数据,已经经过我的验证这样是可行的
- struts1+json的应用
- jquery post json
- jQuery的教程:PHP数组传递JSON
- jQuery的教程:PHP数组传递JSON
- springMVC jquery 对json 数据的传递
- jquery的live post使用
- 美媒:为什么亚马逊研发语音服务?
- 详细讲解transform
- group by
- ImageView 按固定宽度等比例缩放
- RAID-介绍
- 使用JQuery+Struts1.3实现JSON的post传递
- C# 新手项目学习5 --Newtonsoft.Json Json解析
- SSH和MVC的关系
- FlashDevelop快捷键
- Tomcat一点一滴之(三)整合Apache、Nginx
- HDFS--Hadoop分布式文件系统
- 不明白这些错误如何改,求大神指导
- BST与AVL的C++模板实现
- Binary XML file line #2: Error inflating class android.widget