如果现在我有一个隐藏文本框一个文本域:
<input type="hidden" id="id" value="1">
<textarea rows="5" cols="3" id="content"></textarea>
<input type="button" value="确定" id="save" >
目前要做的是把文本框和文本域里面的值提交到后台,同时还要后台处理完后返回一些参数来告诉我有没有提交成功。
Jsp页面最开始要添加的代码:
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<c:set var="contextPath" value="<%=basePath%>" />
我们可以选择使用原本的ajax 也可以使用jquery中提供的方法。
$("#save").click(function(){
var id = $.trim($("#id").val());
var content = $.trim($("#content").val());
$.ajax({
type: "POST",
url: "${ctx}/testAction.do?method=save",
data: "id="+id+"&content="+content,
success: function(msg){
if(msg==’success’){
alert();
}
}
});
});
在文本域里面输入包含“%”的内容:
后台在action中直接调用在service中的方法,如下:
public void save(Integer id, String content) {
DetailDO scdo = testDao.getDetailDOById(id);
if(content!=null&&!"".equals(content)){
scdo.setContent(content);
}else{
scdo.setContent(null);
}
}
如果在文本域里面你输入的值只有“%“或者“测试内容%”,就会出现以下异常:
2010-9-16 15:32:35 org.apache.tomcat.util.http.Parameters processParameters
警告: Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: EOF
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:80)
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:46)
at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:411)
at ... ...
输入的值只有“测试内容%测试内容”或者“%测试内容”,就会出现以下异常:
2010-9-16 15:36:00 org.apache.tomcat.util.http.Parameters processParameters
警告: Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: isHexDigit
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:85)
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:46)
at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:411)
at ... ...
其实主要是因为上面的提交方式是把值放在URL中传递到后台,即[color=black]get的方式进行提交,%好像是特殊的字符,于是就出现这样的异常,解决办法。[/color]
1.改为form提交,post提交方式:
<form [b][color=red]method="post"[/color] [/b]id="testForm" name="testForm">
<input type="hidden" id="id" value="1">
<textarea rows="5" cols="3" id="content"></textarea>
<input type="button" value="确定" id="save" >
</form>
2. 修改提交事件:
首先你应该要知道jquery的validate验证机制,然后你看到下面的方法你就明白是怎么回事了:
$("#testForm").validate({
submitHandler:function(form) {
//...//提交之前要执行的操作可以放在这里
jQuery(form).ajaxSubmit(function(msg){
//以ajax方式提交表单(一定要写,不然表单不会被提交)
这里你就可以做你想做的事情了... ...
});
//...//提交表单完成所要执行的操作可以放在这里
}
});
//保存
$("#save").click(function(){
var act = "${ctx}/testAction.do?method=save";
$("#testForm").attr("action",act);
$("#testForm").submit();
});
上面的解决办法利用了jquery中validate的一种提交方式的回调机制,但是没有使用验证,如果你需要加上你的验证,可以去查询jquery.validate的文章。
分享到:
相关推荐
该资源包含了一个使用jquery提交表单的代码,简单易懂,喜欢的下载。
SpringMVC框架下使用jQueryAJAX进行数据交互的一个DEMO http://blog.csdn.net/lazyrabbitlll/article/details/78615309
NULL 博文链接:https://hw1287789687.iteye.com/blog/2228888
PHP+Jquery+AJAX POST,GET提交表单并接收返回
使用 jquery ajax访问后台服务器demo
使用jquery实现ajax分页含源码使用jquery实现ajax分页含源码使用jquery实现ajax分页含源码
本篇文章主要介绍了jQuery Ajax前后端使用JSON进行交互示例,实现前端通过jQuery Ajax传输json到后端,后端接收json,对json进行处理,后端返回一个json给前端,有兴趣的可以了解一下。
load()方法 、 $.get()和$.post()方法 、 $.getScript()和$.getJson() 、 $.ajax()方法 、 ...jQuery中的Ajax全局事件 这些都有详尽的例子,一看代码,你就能明白jquery里实现ajax是怎么回事了,简单明了。
Struts2+jQuery ajax的一个商品小系统Struts2+jQuery ajax的一个商品小系统
Jquery ajax 读取txt文件 Jquery分页 Jquery ajax 读取txt文件 Jquery分页
在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的方法。$get方式提交表单get() 方法通过远程HTTP ,下面我...
php 用jquery ajax登陆,这是一个最简单的jquery ajax登陆实例,看了这个相信聪明的你能写出更好的东东!
用Jquery的Ajax提交整个表单,我用的1.3.2的版本。
jqueryajax jquery ajax
Ajax使用jQuery提交表单 文件
本项目使用了jQuery的get/post两种方法提交Json格式的数据到后台,后台再把Json格式的数据传到前台。实现了JSON字符串和JSON对象之间的转换。
jquery ajaxfrom表单提交代码,里面有两个js文件选择任意一个就可以了
jQuery ajax、post、get、json格式传递数据例子 jQuery ajax、post、get、json格式传递数据例子
利用jquery的ajax提交表单数据到后台。后台使用spring.
jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换...