java - 在 ajax post 请求中发送特殊字符时出现问题

标签 java ajax servlets jquery

我在 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/

相关文章:

javascript - Getting TypeError : 'caller' , 'callee' 和 'arguments' properties may not be accessed on strict mode

javascript - if 和 else 在 XMLHttpRequest() 中不进行比较

c# - 单击 "OK"按钮时 Modalpopupextender 关闭

java - 使用java控制在html img标签中渲染哪个图像

java - 创建名为 : org. springframework.beans.factory.NoSuchBeanDefinitionException 的 bean 时出错

java - 将字符串转换为多维数组

servlets - 如何修复500内部服务器错误/Servlet错误

java - servlet 容器中基于 Netty 的服务器

java - JAX-RS 与 Jersey : Testing REST service deployed in weblogic/JBoss

java - 无法从事件调度程序线程调用方法