JAVA EE(struts2+ajax+jquery)

这次采用struts2来实现一个简易的网上订餐系统,初步接触jquery和ajax技术,把作为初学者遇到的问题总结如下:

1、<tr>标签里的onclick比子标签<td>里面的onclick执行的晚。对于以下功能(如图),要判断点击了哪一行,本来加了表单的隐藏域,tr的onclick触发,给该隐藏域设置value的值,然后<td>的onclick里面通过ajax进行具体操作,提交给后台。但是由于上述执行顺序,导致第一次value为空,第二次value为上一次的值,不可取。所以取消该隐藏域,在<td>的onclick函数里传参数进去,直接设置即可。


2、为了在前台显示“已通过”的状态,采用ajax在回调函数中写,给显示的<td>标签用<span>的id来方便jquery来查找该标签,主要代码如下:

前台:

<td width="81" scope="col"><span id="state<%=rests.get(i).getRid()%>">
									<%=rests.get(i).getState() %></span></td>
JS:

function passRest(id)
	{
		$.post("managerAction!passRest",{
			restID: id
			},function(result){
				$("#state"+id).html("已通过");
			});
	}


3、关于JSON的使用参考http://hybxiaodao.iteye.com/blog/1107651。本来json-lib还依赖于其他的包开始没有导入所以一直出错,还不如自己构造JSON字符串来的简单~但不知道为什么post提交返回类型是json的话回调函数不执行,返回类型不写自己转换就可以了。转换方式很简单,如下:

$.post("managerAction!getInfo",{
			restID : popid
			},function callback(json){
				var dataObj=eval("("+json+")");
				alert(dataObj.img);
			});


4、关于struts2的上传遇到的问题有两个,一个是File导入的包是import java.io.File,不是struts里面的,否则FileInputStream的参数只能传String。还有拦截器要先引用默认的拦截器,这点 需要注意。


5、struts2标签有默认的布局,会换行,放在表格里按照表格的布局会乱套,可以屏蔽掉默认的换行,参 考http://blog.sina.com.cn/s/blog_53a99cf30100eft1.html


6、在action中写JS输出提示信息,注意之后用重定向无法跳转,直接在JS中使用location即可,主要代码如下:

out.println("<script   type=\"text/javascript\"   language=\"javascript\">");   
		out.println("alert(\"操作成功!\");location=\"Rest/Rest.jsp\";");   
		out.println("</script>");   
		out.close();

7、AJAX的中文乱码问题http://zxc.zn2006.blog.163.com/blog/static/23298584201136105723850/,回调显示时也要注意response要设置编码UTF-8,并且界面也是UTF-8。然后JS文件也要设置为UTF-8否则alert等中文也是乱码。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值