为什么servlet获取不到$.ajax()传过来的数据

_阿坤 2014-08-27 01:04:09
//================JSP代码=================
sentData是测试发送的数据但是在servlet里接收不到,为什么?
<html>
<head>

<title>My JSP 'index.jsp' starting page</title>

<script type="text/javascript">
function _commit() {
var sentData = {"name":"xxx","password":"我不好"};
$.ajax({
url:"${pageContext.request.contextPath}/ParseJsonServlet", //访问路径
type:"POST", //访问方式
data:sentData, //传入服务端的数据
dataType:"json",
contentType:"application/json;charset=utf-8",
success :function() {
$(document.forms[0]).remove();
$("#statuSpan").text("提交成功!");
}
});
}
</script>
<script type="text/javascript" src="js/jquery-1.5.1.js"></script></head>
<body>
<form action="" method="POST">
<input type="text" name="name" value="Jack">
<input type="text" name="description" value="My name is Jack">
<input type="button" value="提交" onclick="_commit()">
</form>
<span id="statuSpan" ></span>
</body>
</html>

//================Servlet代码=================

public class ParseJsonServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
System.out.println(request.getParameter("name"));
}

}


...全文
938 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
_阿坤 2014-08-27
  • 打赏
  • 举报
回复
我找到两者解决方法 第一种是将 $.ajax()里的 contentType:"application/json;charset=utf-8", 注释掉 这样就可以通过

    request.setCharacterEncoding("UTF-8");
    System.out.println(request.getParameter("name"));
获取json参数值了 第二种是将sentData加单引号改为var sentData =‘ {"name":"xxx","password":"我不好"}’; 这样可以通过

    	BufferedReader bufr = 
        	new BufferedReader(
        		new InputStreamReader(request.getInputStream(),"UTF-8"));
        StringBuilder sBuilder = new StringBuilder("");
        String temp = "";
        while((temp = bufr.readLine()) != null){
            sBuilder.append(temp);
        }
        bufr.close();
        String json = sBuilder.toString();
        System.out.println(json);
获取参数列表
  • 打赏
  • 举报
回复
应该是乱码了。。好像java要调用2次encodeURIComponent来编码数据吧。。具体不懂java如何解码了
_阿坤 2014-08-27
  • 打赏
  • 举报
回复
用以下代码可以获取,但中文显示不出来

    	BufferedReader bufr = 
        	new BufferedReader(
        		new InputStreamReader(request.getInputStream(),"UTF-8"));
        StringBuilder sBuilder = new StringBuilder("");
        String temp = "";
        while((temp = bufr.readLine()) != null){
            sBuilder.append(temp);
        }
        bufr.close();
        String json = sBuilder.toString();
        System.out.println(json);
输出结果为:name=xxx&description=%E6%88%91%E4%B8%8D%E5%A5%BD
  • 打赏
  • 举报
回复
试试用FF等调试工具 看看发送到后台的数据长啥样
内容概要:SSD2828QN4是一款MIPI主桥接芯片,用于连接应用处理器与传统并行LCD接口及支持MIPI从属接口的LCD驱动器。该芯片支持最高每通道1Gbps的串行链路速度,最多可配置4个数据通道,显著减少了信号数量。它支持多种接口模式,包括RGB+SPI组合接口,适用于驱动智能或非智能显示面板,并能通过命令模式和视频模式传输数据。芯片内置时钟和复位模块、外部接口、协议控制单元(PCU)、包处理单元(PPU)、错误校正码/循环冗余校验(ECC/CRC)模块、长包和命令缓冲区、D-PHY控制器、模拟收发器以及内部锁相环(PLL),确保了高效的数据传输和系统稳定性。此外,文档详细描述了芯片的引脚分配、寄存器设置、操作模式、电源序列、时序特性等关键参数,为开发者提供了全面的技术指导。 适合人群:具备一定硬件设计基础,从事嵌入式系统开发、显示技术研究的研发人员。 使用场景及目标:①实现应用处理器与MIPI兼容显示屏之间的高速数据传输;②优化显示系统的功耗表现,减少电磁干扰(EMI);③通过灵活配置不同接口模式来适应各种显示设备的需求。 阅读建议:此文档面向具有一定电子工程背景的专业人士,建议读者结合实际项目需求深入理解各章节内容,特别是关于寄存器配置、时序要求等方面的具体说明。对于初次接触此类技术的开发者而言,建议先熟悉基本概念再逐步掌握高级功能的应用方法。

52,780

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧