如果现在我有一个隐藏文本框一个文本域:
<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的文章。
分享到:
相关推荐
在本问题中,我们关注的是在IE8浏览器中使用jQuery的Ajax功能获取静态资源时遇到的“TypeError:拒绝访问”错误。这个问题通常与跨域请求(CORS)和浏览器的兼容性有关。 首先,让我们深入理解Ajax。Ajax...
在"ajax jsp jquery json 简单小实例"中,我们可以预期这个项目使用jQuery来触发AJAX请求,向服务器发送或接收数据。jQuery的`.ajax()`方法是实现这一功能的主要工具,它允许我们配置请求的各个细节,如URL、类型...
在本篇文章中,我们将深入探讨jQuery中的几种主要AJAX方法:GET、POST、LOAD以及通用的AJAX方法。 ### 1. GET 请求 `$.get()` 方法是jQuery中执行HTTP GET请求的简捷方式。GET请求通常用于从服务器获取数据。它的...
描述中提到,这个问题涉及到通过jQuery的getJSON方法与服务器上的.ashx(一般处理程序)文件进行通信,以获取并处理自定义内容。 在.NET框架中,.ashx文件是一种轻量级的HTTP处理器,它不绑定到特定的ASP.NET页面...
标题"解决ecshop中使用jquery冲突问题"指的是如何在 ECShop 环境下,消除 jQuery 与 Prototype 之间的冲突,以便能够安全地使用 jQuery 的功能,特别是利用 jQuery 的 `$.get()` 和 `$.post()` 方法来替换原本使用 ...
在使用jQuery进行Ajax开发时,有时我们可能会遇到Ajax请求出现错误的情况。这可能是由于网络问题、服务器端错误、请求格式不正确或者JavaScript代码中的错误。为了解决这些问题,我们需要掌握如何有效地调试jQuery ...
在上述问题中,开发者遇到了在重写jQuery的`ajax`方法后,使用`load`方法加载内容时出现错误的情况。下面我们将详细解释这个问题的原因以及提供的解决方案。 首先,jQuery的`ajax`方法是用于发送异步HTTP请求的核心...
在这篇文章中,讨论了在使用jquery.form插件进行AJAX提交时,IE浏览器对某些响应头信息的处理可能与其他浏览器(如Firefox和Opera)不同,从而导致提交没有反应的问题。主要知识点包括: 1. jquery.form插件:这是...
在使用jQuery AJAX进行GET请求时,我们经常遇到的一个问题是浏览器的自动缓存机制。这个机制在某些情况下可以提高页面加载速度,但同时也可能导致数据更新不及时,因为浏览器可能会复用先前缓存的响应,而不是向...
4. **Ajax请求**:`.ajax()`方法简化了异步数据请求,支持XMLHttpRequest和JSONP跨域请求,还有更简单的`.get()`和`.post()`方法。 5. **链式操作**:jQuery的所有方法都返回jQuery对象,这使得我们可以连续调用多...
1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了 前端: $.ajax({ type : get, data : {'dbId'...
在实践中,你还可以学习如何使用 jQuery 的 $.ajax() 或 $.get()、$.post() 等简化方法,以及了解 Promise 和 async/await 语法来优化异步代码。同时,学习如何处理状态码、HTTP 头部信息以及错误处理也是提升 Ajax ...
本文将深入讲解如何使用jQuery实现异步操作,包括异步提交表单。 首先,异步操作的基础是AJAX(Asynchronous JavaScript and XML),虽然现在XML不常用,但概念仍然适用。在jQuery中,我们可以使用`$.getJSON()`...
这个问题在开发者使用Get方法发起AJAX请求时尤为常见,表现为请求虽然被执行,但并没有向后端发送新请求,而是返回了页面加载时的缓存数据。 首先,需要分析一下该问题产生的原因。微信浏览器为了优化用户体验和...
2. **创建$.ajax()调用**:在JavaScript或jQuery代码中,使用$.ajax()方法设置请求参数,包括URL、类型(GET或POST)、成功回调函数等。例如: ```javascript $.ajax({ url: 'your_server_page.jsp', // 服务器端...
### AJAX跨域问题详解 #### 一、引言 在Web开发中,由于浏览器的安全策略限制,同源策略(Same-origin policy)对于不同来源的数据访问进行了严格的限制,从而导致了跨域问题的发生。本篇文章将深入探讨AJAX跨域...
在使用jQuery的$.ajax方法向后台传输JSON数据时,可能会遇到一些常见的问题,这些问题往往会导致请求失败或在后台处理时产生错误。以下是一些关键点和解决方案,可以帮助开发者避免或解决这些问题。 首先,$.ajax...
在使用jQuery的ajax()函数进行数据传输时,中文乱码问题常常困扰着开发者。这个问题主要出现在数据发送到服务器时,由于编码格式不一致导致的字符乱码。以下是一些解决此问题的方法: 方法一:使用`encodeURI()`...
2. **jQuery的Ajax调用**:介绍如何使用jQuery的`$.ajax()`或`$.getJSON()`发起异步请求,与Servlet通信。 3. **JSON序列化与反序列化**:在服务器端如何将Java对象转化为JSON,以及在客户端如何将接收到的JSON数据...