请问大家一个问题,json可以通过JQuery传递这个格式的json数据到后台吗

请问大家一个问题,json可以通过JQuery传递这个格式的json数据到后台吗:{"user":[{"username":"value1","password":"123"},{"username":"value2","password":"456"}]}
我测试了一下,方法1是不能传递到java后台的,而方法2、3是可以传递到java后台的
[code="java"]
$(function(){

var jsonText = "{'user':[{'username':'zhangsan','password':'123' },{'username':'xx','password':'456' }]}";//方法1
// var jsonText = {"username":"zhanglong","password":"123"};// 方法2

//json = {"user.username":"zhangsan","user.password":123};//方法3

 $.ajax({
          type:"POST",
          data:jsonText,
          url:"search.action",
          contentType:"application/json"
      });

});

[/code]

6个回答

首先你要保证你的json字符串是正确的,要不然jquery转换的时候就出错,那么你后台就获取不到东西了!

至少在1.32以前的版本是不支持的。
$(json).serilize()会生成user=Object&user=Object
这个版本不支持深层次上的转化,一级的到是可以。
如{user:123,name:"aaa"}可以,要是其中再有json对象的话就不行了。

但是据称jquery1.4以后的版本就没这个问题,你自己测下就知道了。

jquery升得真快哟,都1.42了,我们还在用1.26呢

你这个"{'user':[{'username':'zhangsan','password':'123' },{'username':'xx','password':'456' }]}"。

最外层不要加引号就对了。

这样
{'user':[{'username':'zhangsan','password':'123' },{'username':'xx','password':'456' }]}

1的json你可以使用json2.js转换,然后通过data传入。

你可能也注意到了,你的方法1是一个json字符串,而你的方法2和3都是json对象。对于json对象如{foo:["bar1", "bar2"]} ,jquery会自动转化成&foo=bar1&foo=bar2'这样的字符串后形势。我使用json格式化器,你的方法1的字符串不能解析,2和3的都可以!

contentType:"application/json"这个改为
dataType:"json"

还是用你的:{"user":[{"username":"value1","password":"123"},{"username":"value2","password":"456"}]} 这个传
通过火狐可以看到

参数application/x-www-form-urlencoded
user[0][password] 123
user[0][username] value1
user[1][password] 456
user[1][username] value2
源代码
user%5B0%5D%5Busername%5D=value1&user%5B0%5D%5Bpassword%5D=123&user%5B1%5D%5Busername%5D=value2&user%5B1%5D%5Bpassword%5D=456

我在后台打印 System.out.println(ServletActionContext.getRequest().getParameter("user[0][password]")); //123就打印出来了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问