这是我的Controller类代码段
@RequestMapping(value = "/createAgent", method = RequestMethod.POST)
@ResponseBody
public String createAgent(@RequestBody String json) {
System.out.println(json);
}
如何将JSON对象传递给此方法。我能以任何方式通过网址传递吗?如果我通过这种方式(虽然这似乎非常错误),
http://localhost:8080/SurveyApp3/createAgent/{"a_id": 8746574632, "pwd": "abcd", "pim_id": 3, "m_id":9738247882}
我收到错误说
WARNING: No mapping found for HTTP request with URI [/SurveyApp3/createAgent/%7B%22a_id%22:%208746574632,%20%22pwd%22:%20%22abcd%22,%20%22pim_id%22:%203,%20%22m_id%22:9738247882%7D] in DispatcherServlet with name 'spring'
我还尝试使用欢迎文件index.jsp
中的ajax请求<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" >
function sendAjax() {
$.ajax({
url: "/createAgent",
type: 'POST',
dataType: 'json',
data: "{\"a_id\":7645534265,\"pwd\":\"abcd\", \"pim_id\":3, \"m_id\":9738247882}",
contentType: 'application/json',
success: function(data) {
alert(data.a_id + " " + data.pwd);
},
error:function(data,status,er) {
alert("error: "+data+" status: "+status+" er:"+er);
}
});
}
</script>
</body>
</html>
当我去这个网址时,
http://localhost:8080/SurveyApp3/createAgent
我收到错误,说不支持GET方法。我仍然是这个主题的新手,我无法弄清楚如何将JSON对象作为参数发送到post方法。 我哪里错了?
谢谢!
答案 0 :(得分:0)
在Spring Controller中,每个方法都必须返回一个视图名称。在您的代码中缺少这就是您获得的原因
警告:找不到包含URI 错误的HTTP请求的映射,请添加
将“viewname”返回到您的代码。
另外,对于对象使用@ModelAttribute ---
@PathVariable --- for Strings
@RequestParam ---用于字符串数组。
希望这会有用......
答案 1 :(得分:0)
在您的控制器中保留此代码:
@RequestMapping(value = "/createAgent", method = RequestMethod.POST)
public @ResponseBody String createAgent(@RequestParam String jsonText) {
System.out.println(jsonText);
}
在你的Ajax调用中保留这个:
$.ajax({
url: "/createAgent",
type: 'POST',
dataType: 'json',
data: {
"jsonText":"{'a_id':7645534265,'pwd':'abcd', 'pim_id':3,'m_id':9738247882}"
},
success: function(data) {
alert(data.a_id + " " + data.pwd);
},
error:function(data,status,er) {
alert("error: "+data+" status: "+status+" er:"+er);
}
});
希望它会有所帮助。 :)
答案 2 :(得分:0)
首先尝试检查下一个依赖项:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
您是否使用按钮发送了帖子URL,是吗?您是否将其配置为调用“sendAjax()”方法?
您可以检查Ajax中输入的网址(查看行的正确语法:
url:“/ createAgent”
也许您使用“/”符号
犯了输入错误