Ank*_*kit 4 java ajax jquery servlets
我在ajax POST请求中发送特殊字符时遇到问题,发送请求的servlet无法正确接收这些特殊字符.Javascript代码:
myAjaxPostrequest=new GetXmlHttpObject();
var parameters1="content="+mainContent;
myAjaxPostrequest.open("POST", "controller", true);
myAjaxPostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
myAjaxPostrequest.send(parameters1);
Run Code Online (Sandbox Code Playgroud)
Servlet代码:
String lsContentToSave = aoReq.getParameter("content");
System.out.println(lsContentToSave);
Run Code Online (Sandbox Code Playgroud)
aoReq 是HttpServletRequest对象.
例如.如果特殊字符是»打印»
我也试过jquery帖子,但仍面临同样的问题.请让我知道解决这个问题的方法.
您已标记jquery-ajax,但您的问题中的JS代码无法识别为jQuery.你真的在使用jQuery吗?这看起来更像是穷人w3schools教程的一部分.
无论如何,您需要在2个位置考虑字符编码.在客户端,当您对参数进行表单编码时,您应该使用encodeURIComponent().这将使用UTF-8 应用百分比编码.
var parameters = "content=" + encodeURIComponent(mainContent);
// ...
Run Code Online (Sandbox Code Playgroud)
在服务器端,在从请求主体获取任何参数之前,应将请求编码设置为UTF-8,如下所示:
request.setCharacterEncoding("UTF-8");
// ...
String content = request.getParameter("content");
// ...
Run Code Online (Sandbox Code Playgroud)
也就是说,如果你真的使用jQuery,那么你不必担心encodeURIComponent()在客户端使用.如果您正在使用$.post()带有数据对象的函数,jQuery将为您处理所有问题.
$.post('controller', { 'content': mainContent}, function() {
// Callback function here.
});
Run Code Online (Sandbox Code Playgroud)