我在 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);
Servlet 代码:
String lsContentToSave = aoReq.getParameter("content");
System.out.println(lsContentToSave);
aoReq
是 HttpServletRequest 对象。
例如。如果特殊字符是 »
,则打印 »
我也尝试过 jquery post,但仍然面临同样的问题。请让我知道此问题的解决方法。
最佳答案
您标记了 jquery-ajax
,但您问题中的 JS 代码无法识别为 jQuery。你真的使用jQuery吗? ?这看起来更像是对糟糕的 w3schools 教程的抄袭。
无论如何,您需要在两个地方考虑字符编码。在客户端,当您对参数进行形式编码时,您应该使用 encodeURIComponent()
.这将适用 percent encoding使用 UTF-8。
var parameters = "content=" + encodeURIComponent(mainContent);
// ...
在服务器端,从请求正文中获取任何参数之前,您应该将请求编码设置为UTF-8,如下所示:
request.setCharacterEncoding("UTF-8");
// ...
String content = request.getParameter("content");
// ...
就是说,如果您真的使用 jQuery,那么您不必担心在客户端使用 encodeURIComponent()
。如果你使用 $.post()
,jQuery 会为你处理这一切。函数与数据对象。
$.post('controller', { 'content': mainContent}, function() {
// Callback function here.
});
关于java - 在 ajax post 请求中发送特殊字符时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530796/