`
to_zoe_yang
  • 浏览: 142314 次
  • 性别: Icon_minigender_2
  • 来自: 01
社区版块
存档分类
最新评论

AJAX中URL的参数带中文

 
阅读更多
package action;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class AddPerson extends ActionSupport {

	public String add() {
		 String name = ServletActionContext.getRequest().getParameter("name");
		 String age = ServletActionContext.getRequest().getParameter("age");
		 String add = ServletActionContext.getRequest().getParameter("add");
		 System.out.println("name:"+name);
		 try {
				name = URLDecoder.decode(name, "UTF-8");
				age = URLDecoder.decode(age, "UTF-8");
				add = URLDecoder.decode(add, "UTF-8");
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			System.out.println("name:" + name);
			System.out.println("age:" + age);
			System.out.println("add:" + add);
				return this.SUCCESS;
	}
}

 今天朋友让帮忙处理乱码的问题,具体的操作为:当在页面选择某项执行修改操作,将弹出一个修改信息对话框,里面可能会输入中文,当点击提交按钮后,通过Javascript中国的AJAX通信,给后台Struts2中的Aciton传递信息进行处理。

其实这么做已经有问题了,应该直接使用Struts传递,但是因为之前是别人写的,就这么传,那也只能继续这么写,不然项目要改的太多~~(管理太混乱了)

很显然,传给Action的参数出现了乱码~

其实很简单,前台得到后需要进行编码,后台再进行解码。

以为Url中中文是需要进行编码的。

 

我就自己写了测试的代码,

 

前台页面如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/thickbox_plus.js"></script>
<script type="text/javascript" src="js/myfunction.js"></script>

<link rel="stylesheet" type="text/css" href="css/thickbox.css"/>

<title>Insert title here</title>
</head>
<body>

Name:<input type="text" id="name"></input>
<br/>
Age:<input type="text" id="age"></input>
<br/>
Address:<input type="text" id="address"></input>
<br/>
<input type="button" value="Add person" onclick="submit()"></input>

</body>
</html>

提交相应的javascript代码 ,这里需要使用encodeURI进行编码,而且要执行两次,因为是测试,也就不管反馈数据了。

 

function submit() {
	var name = $("#name").val();
	var age = $("#age").val();
	var add = $("#address").val();

	var url = "toAdd.action?name=" + name + "&age=" + age + "&add=" + add;
	url = encodeURI(url);
	url=encodeURI(url); 
	alert("URL:" + url);
	$.get(url);

	}

 

后台的Action如下:

 

package action;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class AddPerson extends ActionSupport {

	public String add() {
		String name = ServletActionContext.getRequest().getParameter("name");
		String age = ServletActionContext.getRequest().getParameter("age");
		String add = ServletActionContext.getRequest().getParameter("add");
		System.out.println("name:" + name);
		try {
			name = URLDecoder.decode(name, "UTF-8");
			age = URLDecoder.decode(age, "UTF-8");
			add = URLDecoder.decode(add, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println("name:" + name);
		System.out.println("age:" + age);
		System.out.println("add:" + add);

		return this.SUCCESS;
	}
}

 

 

 

name:%E4%BD%A0%E5%A5%BD
name:你好
age:么
add:不dsf2

 

经测试,中文得以正常在后台显示。

 

分享到:
评论

相关推荐

    ajax传递中文参数乱码解决办法

    在使用AJAX向服务器发送请求时,如果请求参数中包含中文字符,可能会因为编码方式不一致导致接收方解析出错,从而出现乱码现象。这主要是由于客户端(如浏览器)和服务器端默认采用的字符集可能不同所导致的。 ####...

    ajax get请求中文参数乱码解决

    在Ajax GET请求中,参数通常会附加到URL后面,形成查询字符串。 中文字符在HTTP传输过程中可能出现乱码的主要原因有两个: 1. URL编码问题:URL不支持非ASCII字符,因此在发送包含中文字符的请求时,需要先将这些...

    jquery.js(可以在ajax中传输中文参数)

    ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8", 修改了jquery.js,添加了charset=utf8之后ajax就能传输文佬参数过去后台

    lotus domino AJAX js获取url中的中文参数的方法

    lotus domino AJAX js获取url中的中文参数的方法

    ajax中使用javascript的send方法post参数

    ### AJAX中使用JavaScript的send方法POST参数详解 #### 一、引言 在Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于实现网页的局部刷新,提升用户体验。其中,通过JavaScript发送POST请求是一...

    ajax提交中文到servlet

    本文将深入探讨“ajax提交中文到servlet”的相关知识点,以解决在异步传输过程中处理中文字符的问题。 一、Ajax基础 Ajax的核心是通过JavaScript创建XMLHttpRequest对象,它允许浏览器在不重新加载整个网页的情况下...

    ajax到servlet乱码解决

    例如,我们使用 AJAX 通过 URL 传递中文参数 "中文测试" 给 Servlet,Servlet 在接收参数时却变成了乱码 "�������"。这使得我们的应用程序无法正确地处理中文参数。 解决方案 要解决这个问题,我们可以从两...

    ajax提交,后台中文乱码解决

    在第一个示例中,开发者通过调用`encodeURIComponent()`或`encodeURI()`函数对请求URL中的参数进行编码。这是因为在发送HTTP请求时,URL中的特殊字符和非ASCII字符需要被转换成一种可传输的格式。`...

    ajax中文API

    **Ajax中文API** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。Ajax的核心是JavaScript对象...

    ajax中文乱码如何解决

    在本文中,我们将深入探讨如何解决使用Ajax进行POST请求时出现的中文乱码问题。首先,我们要理解Ajax中文乱码的根源,它通常涉及到字符编码的不一致,尤其是在客户端与服务器之间的通信过程中。 Ajax(Asynchronous...

    JSP中 ajax的get请求的中文乱码问题的解决方法.pdf

    如果你在JavaScript中使用Ajax发送GET请求,确保使用`encodeURIComponent()`函数对包含中文的参数进行编码。这将确保在发送到服务器之前,中文字符被正确地编码。 6. **浏览器兼容性**: 考虑到不同浏览器可能对...

    lotus domino AJAX get通过URL传数据

    本例中,我们将探讨如何使用AJAX的GET方法通过URL传递数据,并在Lotus Domino后端处理这些数据。 首先,让我们了解AJAX(Asynchronous JavaScript and XML)的基本概念。AJAX是一种在无需刷新整个页面的情况下,...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的问题:即通过Ajax发送带有中文字符的数据时,后端接收到的数据出现乱码现象。...

    jquery.ajax的url中传递中文乱码问题的解决方法

    除此之外,还可以通过JavaScript代码显式设置请求的参数值,将中文变量直接拼接在URL中,而不是让浏览器自动编码。如下例所示: ```javascript function confirmCommit() { var wlCompany = $("#wlCompany").val()...

    ajax教程 中文手册

    **Ajax教程中文手册** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提高了用户体验。Ajax...

    AJAX.CHM 中文文档

    这个中文的"AJAX.CHM"帮助文档详细地涵盖了AJAX的基础概念、核心原理以及实际应用,旨在为开发者提供全面的指导。CHM(Compiled Help Manual)是微软开发的一种帮助文件格式,它将HTML文件、图像和其他资源打包成一...

    jquery ajax传递中文参数乱码问题及解决方法说明

    在`url`参数中,我们使用`escape()`函数对中文参数进行了编码,以确保它们在网络传输过程中保持正确格式。 编码过程如下: ```javascript url: "ajaxpage.aspx?t=smrz&name=" + escape(name) + "&zjtype=" + ...

    ajax解决中文乱码(java/jsp)

    通过上述代码,我们可以确保在发送AJAX请求时,URL中的中文字符会被正确地编码为相应的Unicode形式,从而避免了传输过程中的乱码问题。 #### 后端处理:参数接收与解码 在后端(即服务器端),我们需要对接收到的...

    AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题

    ### AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题 #### 背景与问题概述 在使用AJAX技术进行前后端数据交互时,经常会出现中文字符编码的问题,尤其是在使用`XMLHttpRequest`对象发送请求的过程中。例如...

    使用prototype.js发送ajax get请求中文参数乱码解决

    综上所述,解决`prototype.js`发送Ajax GET请求中文参数乱码问题的关键在于确保客户端、服务器和传输过程中的编码一致性。这包括设置请求头、服务器配置以及HTML页面的字符集声明。在实际开发中,理解并处理这些细节...

Global site tag (gtag.js) - Google Analytics