ajax前台提交数据,Json数据在java后台怎么取出来??

时间:2021-10-31 18:56:46
 <script type="text/javascript">
   function validate(){
   //var username = $('#usernmae').val();
   var username = document.getElementById("username").value;
   alert(username);
   $.ajax({
   url:"register",
   type:"post",
   date:{username:username},
   success:function(data){
   $('#message').html(data);
   }
  
   });

我想问下这个data数据不管是写成"username"+username,还是{"username":username},在后台Java中都取不出来,是怎么回事??我想知道在ajax中数据到底是什么样的形式在传递。我在后台用的是stream的形式返回的text文本值,就是不清楚struts2跟ajax到底数据是怎么流转的!!!!11懂的人告诉我,最好有深入研究的!!!!!

31 个解决方案

#1


自己顶一下,总感觉知道ajax跟struts2之间,数据传递,到底数据在什么位置,是以什么样的形式存在的,有多人知道????????????????????????????????

#2


整个csdn我看下有没有高人能够弄懂这个问题!!!!这个问题,好多人都是模仿传递数据,但是数据到底在哪里,很多人都没搞清楚,国内有人知道吗?????

#3


request.getParameter

#4


说用request取值的,我想问你,到底怎么取值???我用的是jason{"username":username},你要我在后台用request.getParameter("username"),这种方式吗??????根本取不出来啊!!!!!request只对,“username=“+username这种形式有用吧??????????????到底有没有人会啊!!!!

#5


服务器端:
$phpArray是你存数据的数组
$phpArray = array();
array_push($phpArray, 你的数据);
最后别忘了
echo json_encode($phpArray);

客户端:
用$.ajax读取来之后,
$.ajax({
    url: "your URL",
    method: "POST/GET",
    data: { param1: "", param2: ""}, //你想传递的参数
   success: function(response){
     var myData = eval("(" + response+")");
   }
});
myData是JS的数组

#6


在后台定义private String username;getter setter

#7


在我的理解是这样的:
ajax请求的入参格式应该是这样的{"name" : name, "age" : age, "frendList" : frendList};
然后在action获取:request.getParameter("name");    request.getParameter("age");   request.getParameter("frendList");
其中:name,age,  FrendList 都应该是 json字符串 或 者普通的字符串

#8


date:{"username":username},
按照这个格式试试。
给userName加上引号

#9


action中用request.getParameter("name"); 是没问题的

#10


没问题,那意思,jason是ajax跟java数据交换的唯一格式,就是一种规范。同时这个数据存放在了作用域里面,我这样理解,正确吗????

#11


我的理解:JSON只是传输数据的一种方式,楼上说的{"username":username}它是JSON的格式,因为JSON传输比较快,所以现在大家都再用JSON而传输数据并不只有JSON啊
参考http://www.jb51.net/article/48668.htm

#12


补充:传值方式有两种GET,POST传过去的值的形式有三种:字符串, XML, JSON

#13


data数据不管是写成"username"+username,还是{"username":username}

配置成字符串或者json对象都行,配置成字符串url键值对 jquery会直接传递,如果是json对象jquery会自动帮你转为url键值,最终传递的就是键值对对象,

获取不到自己检查服务器配置,如是否区分get/post请求什么的

#14


该回复于2015-05-20 09:14:25被管理员删除

#15


前端传送 json格式的数据,后端接收并解析(这个问题也困扰我很久,现在终于解决。。。 ajax前台提交数据,Json数据在java后台怎么取出来??
toSendJsonData_request.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

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

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

<script type="text/javascript" src="./jquery/jquery-1.11.1.min.js"></script>

</head>

<body>
This is my JSP page.
<br>
</body>
<script type="text/javascript">
$(function (){
var jsonStr = [ {
'name' : 'jim',
'age' : 20
}, {
'name' : 'king',
'age' : 26
}, {
'name' : 'jge',
'age' : 30
} ];
var url="./AjaxDemo/toGetJsonData_reponse.jsp";
$.ajax({
type : "post",
url : url,
dataType : 'json',
data : {
'mydata' : JSON.stringify(jsonStr)//注意一定要使用JSON.stringify (在IE6,IE7中不支持)
},
success : function(data,textStatus) {
alert(data.name);
},
error : function(xhr, status, errMsg) {
alert("操作失败!");
}
});
});
</script>
</html>
toGetJsonData_reponse.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page
import="net.sf.json.*"%>
<%
//  String jsonStr = ServletActionContext.getRequest().getParameter(
//  "mydata");


//  String jsonStr = "[{'name':'jim','age':20},{'name':'king','age':26},{'name':'jge','age':30}]";
String jsonStr = request.getParameter("mydata");
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
String name = "";
String age = "";
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonJ = jsonArray.getJSONObject(i);
name = jsonJ.getString("name");
age = jsonJ.getString("age");
}
%>{"name":"<%=name%>"}

#16


引用 15 楼 oqqRay12 的回复:
前端传送 json格式的数据,后端接收并解析(这个问题也困扰我很久,现在终于解决。。。 ajax前台提交数据,Json数据在java后台怎么取出来??
toSendJsonData_request.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

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

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

<script type="text/javascript" src="./jquery/jquery-1.11.1.min.js"></script>

</head>

<body>
This is my JSP page.
<br>
</body>
<script type="text/javascript">
$(function (){
var jsonStr = [ {
'name' : 'jim',
'age' : 20
}, {
'name' : 'king',
'age' : 26
}, {
'name' : 'jge',
'age' : 30
} ];
var url="./AjaxDemo/toGetJsonData_reponse.jsp";
$.ajax({
type : "post",
url : url,
dataType : 'json',
data : {
'mydata' : JSON.stringify(jsonStr)//注意一定要使用JSON.stringify (在IE6,IE7中不支持)
},
success : function(data,textStatus) {
alert(data.name);
},
error : function(xhr, status, errMsg) {
alert("操作失败!");
}
});
});
</script>
</html>
toGetJsonData_reponse.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page
import="net.sf.json.*"%>
<%
//  String jsonStr = ServletActionContext.getRequest().getParameter(
//  "mydata");


//  String jsonStr = "[{'name':'jim','age':20},{'name':'king','age':26},{'name':'jge','age':30}]";
String jsonStr = request.getParameter("mydata");
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
String name = "";
String age = "";
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonJ = jsonArray.getJSONObject(i);
name = jsonJ.getString("name");
age = jsonJ.getString("age");
}
%>{"name":"<%=name%>"}



为什么我在后台Servlet接收JSON时候报错了,说JSON文本格式要包含在'[  ]'括号,加了括号之后转成JSONArray后又array.size()只有一行......这是什么情况,是前台表格属性设置的问题吗?我用的是easyui datagrid。

#17


你好,新手学app开发,前端用ajax传送数据后,后台在myecplise中怎样用java取出数据啊?能给详细一点的解答吗?感谢!!

#18


能弱弱的说句,data写成date了吗?

#19


我怎么觉得楼上正解了

#20


哈哈哈,楼上的楼上正解了,要笑死了

#21


然而楼主已经不在了.... ajax前台提交数据,Json数据在java后台怎么取出来??

#22


该回复于2017-02-24 16:29:19被管理员删除

#23


这帖子真是人才辈出。尤其是楼主。

#24


楼主 
  date:{username:username},
这句话 你犯了2个错误
第一个  是data 不是data
第二个 键值对 第二个值应该要加双引号或者单引号

#25


数据读取顺序试试哦

#26


引用 24 楼 huanxuan163 的回复:
楼主 
  date:{username:username},
这句话 你犯了2个错误
第一个  是data 不是data
第二个 键值对 第二个值应该要加双引号或者单引号


也是人才,‘’是data不是data‘’,有区别吗。。。

#27


哈哈,笑死!!都是人才

#28


不行了。  像我这种从来不评论的人 也得来一句  
太人才了

#29


看到这贴,我也是笑晕了。
将数据封装成date,后台肯定取不到啦。

#30


表示上次别人也问了我一样的问题,过去瞄了一下,也是date........

#31


楼主估计是被搞疯了。还是太年轻,一点都不淡定~

#1


自己顶一下,总感觉知道ajax跟struts2之间,数据传递,到底数据在什么位置,是以什么样的形式存在的,有多人知道????????????????????????????????

#2


整个csdn我看下有没有高人能够弄懂这个问题!!!!这个问题,好多人都是模仿传递数据,但是数据到底在哪里,很多人都没搞清楚,国内有人知道吗?????

#3


request.getParameter

#4


说用request取值的,我想问你,到底怎么取值???我用的是jason{"username":username},你要我在后台用request.getParameter("username"),这种方式吗??????根本取不出来啊!!!!!request只对,“username=“+username这种形式有用吧??????????????到底有没有人会啊!!!!

#5


服务器端:
$phpArray是你存数据的数组
$phpArray = array();
array_push($phpArray, 你的数据);
最后别忘了
echo json_encode($phpArray);

客户端:
用$.ajax读取来之后,
$.ajax({
    url: "your URL",
    method: "POST/GET",
    data: { param1: "", param2: ""}, //你想传递的参数
   success: function(response){
     var myData = eval("(" + response+")");
   }
});
myData是JS的数组

#6


在后台定义private String username;getter setter

#7


在我的理解是这样的:
ajax请求的入参格式应该是这样的{"name" : name, "age" : age, "frendList" : frendList};
然后在action获取:request.getParameter("name");    request.getParameter("age");   request.getParameter("frendList");
其中:name,age,  FrendList 都应该是 json字符串 或 者普通的字符串

#8


date:{"username":username},
按照这个格式试试。
给userName加上引号

#9


action中用request.getParameter("name"); 是没问题的

#10


没问题,那意思,jason是ajax跟java数据交换的唯一格式,就是一种规范。同时这个数据存放在了作用域里面,我这样理解,正确吗????

#11


我的理解:JSON只是传输数据的一种方式,楼上说的{"username":username}它是JSON的格式,因为JSON传输比较快,所以现在大家都再用JSON而传输数据并不只有JSON啊
参考http://www.jb51.net/article/48668.htm

#12


补充:传值方式有两种GET,POST传过去的值的形式有三种:字符串, XML, JSON

#13


data数据不管是写成"username"+username,还是{"username":username}

配置成字符串或者json对象都行,配置成字符串url键值对 jquery会直接传递,如果是json对象jquery会自动帮你转为url键值,最终传递的就是键值对对象,

获取不到自己检查服务器配置,如是否区分get/post请求什么的

#14


该回复于2015-05-20 09:14:25被管理员删除

#15


前端传送 json格式的数据,后端接收并解析(这个问题也困扰我很久,现在终于解决。。。 ajax前台提交数据,Json数据在java后台怎么取出来??
toSendJsonData_request.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

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

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

<script type="text/javascript" src="./jquery/jquery-1.11.1.min.js"></script>

</head>

<body>
This is my JSP page.
<br>
</body>
<script type="text/javascript">
$(function (){
var jsonStr = [ {
'name' : 'jim',
'age' : 20
}, {
'name' : 'king',
'age' : 26
}, {
'name' : 'jge',
'age' : 30
} ];
var url="./AjaxDemo/toGetJsonData_reponse.jsp";
$.ajax({
type : "post",
url : url,
dataType : 'json',
data : {
'mydata' : JSON.stringify(jsonStr)//注意一定要使用JSON.stringify (在IE6,IE7中不支持)
},
success : function(data,textStatus) {
alert(data.name);
},
error : function(xhr, status, errMsg) {
alert("操作失败!");
}
});
});
</script>
</html>
toGetJsonData_reponse.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page
import="net.sf.json.*"%>
<%
//  String jsonStr = ServletActionContext.getRequest().getParameter(
//  "mydata");


//  String jsonStr = "[{'name':'jim','age':20},{'name':'king','age':26},{'name':'jge','age':30}]";
String jsonStr = request.getParameter("mydata");
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
String name = "";
String age = "";
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonJ = jsonArray.getJSONObject(i);
name = jsonJ.getString("name");
age = jsonJ.getString("age");
}
%>{"name":"<%=name%>"}

#16


引用 15 楼 oqqRay12 的回复:
前端传送 json格式的数据,后端接收并解析(这个问题也困扰我很久,现在终于解决。。。 ajax前台提交数据,Json数据在java后台怎么取出来??
toSendJsonData_request.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

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

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

<script type="text/javascript" src="./jquery/jquery-1.11.1.min.js"></script>

</head>

<body>
This is my JSP page.
<br>
</body>
<script type="text/javascript">
$(function (){
var jsonStr = [ {
'name' : 'jim',
'age' : 20
}, {
'name' : 'king',
'age' : 26
}, {
'name' : 'jge',
'age' : 30
} ];
var url="./AjaxDemo/toGetJsonData_reponse.jsp";
$.ajax({
type : "post",
url : url,
dataType : 'json',
data : {
'mydata' : JSON.stringify(jsonStr)//注意一定要使用JSON.stringify (在IE6,IE7中不支持)
},
success : function(data,textStatus) {
alert(data.name);
},
error : function(xhr, status, errMsg) {
alert("操作失败!");
}
});
});
</script>
</html>
toGetJsonData_reponse.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page
import="net.sf.json.*"%>
<%
//  String jsonStr = ServletActionContext.getRequest().getParameter(
//  "mydata");


//  String jsonStr = "[{'name':'jim','age':20},{'name':'king','age':26},{'name':'jge','age':30}]";
String jsonStr = request.getParameter("mydata");
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
String name = "";
String age = "";
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonJ = jsonArray.getJSONObject(i);
name = jsonJ.getString("name");
age = jsonJ.getString("age");
}
%>{"name":"<%=name%>"}



为什么我在后台Servlet接收JSON时候报错了,说JSON文本格式要包含在'[  ]'括号,加了括号之后转成JSONArray后又array.size()只有一行......这是什么情况,是前台表格属性设置的问题吗?我用的是easyui datagrid。

#17


你好,新手学app开发,前端用ajax传送数据后,后台在myecplise中怎样用java取出数据啊?能给详细一点的解答吗?感谢!!

#18


能弱弱的说句,data写成date了吗?

#19


我怎么觉得楼上正解了

#20


哈哈哈,楼上的楼上正解了,要笑死了

#21


然而楼主已经不在了.... ajax前台提交数据,Json数据在java后台怎么取出来??

#22


该回复于2017-02-24 16:29:19被管理员删除

#23


这帖子真是人才辈出。尤其是楼主。

#24


楼主 
  date:{username:username},
这句话 你犯了2个错误
第一个  是data 不是data
第二个 键值对 第二个值应该要加双引号或者单引号

#25


数据读取顺序试试哦

#26


引用 24 楼 huanxuan163 的回复:
楼主 
  date:{username:username},
这句话 你犯了2个错误
第一个  是data 不是data
第二个 键值对 第二个值应该要加双引号或者单引号


也是人才,‘’是data不是data‘’,有区别吗。。。

#27


哈哈,笑死!!都是人才

#28


不行了。  像我这种从来不评论的人 也得来一句  
太人才了

#29


看到这贴,我也是笑晕了。
将数据封装成date,后台肯定取不到啦。

#30


表示上次别人也问了我一样的问题,过去瞄了一下,也是date........

#31


楼主估计是被搞疯了。还是太年轻,一点都不淡定~