`
seyaa
  • 浏览: 55799 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用jquery 的ajax(get)提交 含%报错问题

阅读更多
如果现在我有一个隐藏文本框一个文本域:
<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的文章。
分享到:
评论
4 楼 bean5618 2010-09-16  
如果我没记错的话,好像有个函数叫encodeURIComponent
3 楼 sd1992585 2010-09-16  
 
2 楼 seyaa 2010-09-16  
liujun999999 写道
楼主,这个跟jquery没有关系,提交表单的get和post的区别而已

抱歉 !也许是我表诉的不合理,主要是讲述我在使用jquery的时候遇到这个问题和解决这个问题的方法。谢谢你的指出!
1 楼 liujun999999 2010-09-16  
楼主,这个跟jquery没有关系,提交表单的get和post的区别而已

相关推荐

    IE8 jquery ajax获取静态资源报错TypeError 拒绝访问

    在本问题中,我们关注的是在IE8浏览器中使用jQuery的Ajax功能获取静态资源时遇到的“TypeError:拒绝访问”错误。这个问题通常与跨域请求(CORS)和浏览器的兼容性有关。 首先,让我们深入理解Ajax。Ajax...

    jquery ajax jsp

    在"ajax jsp jquery json 简单小实例"中,我们可以预期这个项目使用jQuery来触发AJAX请求,向服务器发送或接收数据。jQuery的`.ajax()`方法是实现这一功能的主要工具,它允许我们配置请求的各个细节,如URL、类型...

    jqueryAjax

    在本篇文章中,我们将深入探讨jQuery中的几种主要AJAX方法:GET、POST、LOAD以及通用的AJAX方法。 ### 1. GET 请求 `$.get()` 方法是jQuery中执行HTTP GET请求的简捷方式。GET请求通常用于从服务器获取数据。它的...

    net+jquery+json实现ajax

    描述中提到,这个问题涉及到通过jQuery的getJSON方法与服务器上的.ashx(一般处理程序)文件进行通信,以获取并处理自定义内容。 在.NET框架中,.ashx文件是一种轻量级的HTTP处理器,它不绑定到特定的ASP.NET页面...

    解决ecshop中使用jquery冲突问题

    标题"解决ecshop中使用jquery冲突问题"指的是如何在 ECShop 环境下,消除 jQuery 与 Prototype 之间的冲突,以便能够安全地使用 jQuery 的功能,特别是利用 jQuery 的 `$.get()` 和 `$.post()` 方法来替换原本使用 ...

    Jquery Ajax Error 调试错误的技巧

    在使用jQuery进行Ajax开发时,有时我们可能会遇到Ajax请求出现错误的情况。这可能是由于网络问题、服务器端错误、请求格式不正确或者JavaScript代码中的错误。为了解决这些问题,我们需要掌握如何有效地调试jQuery ...

    jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法

    在上述问题中,开发者遇到了在重写jQuery的`ajax`方法后,使用`load`方法加载内容时出现错误的情况。下面我们将详细解释这个问题的原因以及提供的解决方案。 首先,jQuery的`ajax`方法是用于发送异步HTTP请求的核心...

    IE中jquery.form中ajax提交没反应解决方法分享

    在这篇文章中,讨论了在使用jquery.form插件进行AJAX提交时,IE浏览器对某些响应头信息的处理可能与其他浏览器(如Firefox和Opera)不同,从而导致提交没有反应的问题。主要知识点包括: 1. jquery.form插件:这是...

    Jquery Ajax的Get方式时需要注意URL地方

    在使用jQuery AJAX进行GET请求时,我们经常遇到的一个问题是浏览器的自动缓存机制。这个机制在某些情况下可以提高页面加载速度,但同时也可能导致数据更新不及时,因为浏览器可能会复用先前缓存的响应,而不是向...

    jquery-2.1.4.js 、jquery-2.1.4.min.js 【jquery包 js】

    4. **Ajax请求**:`.ajax()`方法简化了异步数据请求,支持XMLHttpRequest和JSONP跨域请求,还有更简单的`.get()`和`.post()`方法。 5. **链式操作**:jQuery的所有方法都返回jQuery对象,这使得我们可以连续调用多...

    Ajax请求发送成功但不进success的解决方法

    1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了 前端: $.ajax({ type : get, data : {'dbId'...

    ajax教程.ajax入门教程

    在实践中,你还可以学习如何使用 jQuery 的 $.ajax() 或 $.get()、$.post() 等简化方法,以及了解 Promise 和 async/await 语法来优化异步代码。同时,学习如何处理状态码、HTTP 头部信息以及错误处理也是提升 Ajax ...

    使用jQuery实现异步操作(包括异步提及form表单)Meet520.doc

    本文将深入讲解如何使用jQuery实现异步操作,包括异步提交表单。 首先,异步操作的基础是AJAX(Asynchronous JavaScript and XML),虽然现在XML不常用,但概念仍然适用。在jQuery中,我们可以使用`$.getJSON()`...

    解决微信返回上一页,页面中的AJAX的请求,对Get请求无效的问题

    这个问题在开发者使用Get方法发起AJAX请求时尤为常见,表现为请求虽然被执行,但并没有向后端发送新请求,而是返回了页面加载时的缓存数据。 首先,需要分析一下该问题产生的原因。微信浏览器为了优化用户体验和...

    jquery实现页面的异步加载(jsp)

    2. **创建$.ajax()调用**:在JavaScript或jQuery代码中,使用$.ajax()方法设置请求参数,包括URL、类型(GET或POST)、成功回调函数等。例如: ```javascript $.ajax({ url: 'your_server_page.jsp', // 服务器端...

    ajax跨域问题!

    ### AJAX跨域问题详解 #### 一、引言 在Web开发中,由于浏览器的安全策略限制,同源策略(Same-origin policy)对于不同来源的数据访问进行了严格的限制,从而导致了跨域问题的发生。本篇文章将深入探讨AJAX跨域...

    $.ajax传JSON数据到后台出现报错问题解决

    在使用jQuery的$.ajax方法向后台传输JSON数据时,可能会遇到一些常见的问题,这些问题往往会导致请求失败或在后台处理时产生错误。以下是一些关键点和解决方案,可以帮助开发者避免或解决这些问题。 首先,$.ajax...

    jquery的ajax()函数传值中文乱码解决方法介绍

    在使用jQuery的ajax()函数进行数据传输时,中文乱码问题常常困扰着开发者。这个问题主要出现在数据发送到服务器时,由于编码格式不一致导致的字符乱码。以下是一些解决此问题的方法: 方法一:使用`encodeURI()`...

    Jquery+servlet+JSON处理

    2. **jQuery的Ajax调用**:介绍如何使用jQuery的`$.ajax()`或`$.getJSON()`发起异步请求,与Servlet通信。 3. **JSON序列化与反序列化**:在服务器端如何将Java对象转化为JSON,以及在客户端如何将接收到的JSON数据...

Global site tag (gtag.js) - Google Analytics