ajax获取的json数据无法提交到servlet

JS代码:varnewnode={id:(100+newCount),pId:treeNode.id,name:"newnode"+(newCount++)};alert... JS代码:
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
展开
 我来答
393107529
2014-04-10 · TA获得超过154个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:127万
展开全部

你传的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);
    }
});
dark19861201
2014-04-10 · TA获得超过2152个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1781万
展开全部
在URL后面?传输数据是get的方式,不是POST,所以你需要把TYPE设置成GET,然后用doGet方法来接收,试试看呗O(∩_∩)O
更多追问追答
追问
get是获得,post才是传入 ,我是要传给servlet而不是从servlet获得数据
追答

那啥你是不是网上随便看了一眼就下结论了,这是我网上找到的相关信息,你再看一看:

  1. 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);

        }

    });

这样

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NoGrief
2014-04-10 · TA获得超过253个赞
知道小有建树答主
回答量:304
采纳率:100%
帮助的人:219万
展开全部
首先说啊。。post约等于get。。这是两种提交方式。。不同点找度娘
再看代码,你的提交方式post,提交类型是json。。相当于http请求报文的body里面是json。。然后你有把newnode当作参数传给servlet,你的servlet中Contenttype居然是text/html。。不矛盾么。。好好看看jquery提交json的文档。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火两重天
推荐于2017-08-22 · TA获得超过1425个赞
知道小有建树答主
回答量:1489
采纳率:0%
帮助的人:989万
展开全部
url和data改成这种:
url : "addRule.action",// 请求的url
data : {
"indicatorId" : iid,
"alarmPeroidsTypeId" : aid,
"ruleDesc" : ds
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式