ajax获取的json数据无法提交到servlet
var newnode={id:(100 + newCount), pId:treeNode.id, name:"new node" + (newCount++)};
alert(newnode);
zTree.addNodes(treeNode, newnode);
$.ajax({
type: "POST",
url: "tree2serlvet?newnode="+newnode,
dataType:"json",
success: function(data){
alert(newnode);
}
});
return false;
});
};
servlet代码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
String newnode=request.getParameter("newnode");
System.out.println(newnode);
request.getRequestDispatcher("tree2.jsp").forward(request, response);
}
servlet无法获得newnode数据 输出的一直是Null 展开
你传的newnode不是字符串,是json吧,把newnode放到data里传后台
$.ajax({
type: "POST",
url: "tree2serlvet"
data: {
id:(100 + newCount),
pId:treeNode.id,
name:"new node" + (newCount++)
},
dataType:"json",
success: function(data){
alert(newnode);
}
});
get是获得,post才是传入 ,我是要传给servlet而不是从servlet获得数据
那啥你是不是网上随便看了一眼就下结论了,这是我网上找到的相关信息,你再看一看:
get是从服务器上获取数据,post是向服务器传送数据。
2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5.get安全性非常低,post安全性较高。
所以说,你的写法就必须以GET方式来接收,和发送,非要发送POST请求,那么传参方式就不能以URL后面跟参数的形式,必须
$.ajax({
type: "POST",
url: "tree2serlvet"
data: {
"newnode":newnode
},
dataType:"json",
success: function(data){
alert(newnode);
}
});
这样
再看代码,你的提交方式post,提交类型是json。。相当于http请求报文的body里面是json。。然后你有把newnode当作参数传给servlet,你的servlet中Contenttype居然是text/html。。不矛盾么。。好好看看jquery提交json的文档。。
url : "addRule.action",// 请求的url
data : {
"indicatorId" : iid,
"alarmPeroidsTypeId" : aid,
"ruleDesc" : ds
}