浏览 4006 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-16
最后修改:2010-09-16
<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的文章。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-16
楼主,这个跟jquery没有关系,提交表单的get和post的区别而已
|
|
返回顶楼 | |
发表时间:2010-09-16
liujun999999 写道 楼主,这个跟jquery没有关系,提交表单的get和post的区别而已 抱歉 !也许是我表诉的不合理,主要是讲述我在使用jquery的时候遇到这个问题和解决这个问题的方法。谢谢你的指出! |
|
返回顶楼 | |
发表时间:2010-09-16
|
|
返回顶楼 | |
发表时间:2010-09-16
如果我没记错的话,好像有个函数叫encodeURIComponent
|
|
返回顶楼 | |