【发布时间】:2014-04-23 10:13:14
【问题描述】:
我目前正在尝试通过使用 Ajax POST json 请求将数据从我的 jsp 网页视图发送到我的 spring 控制器,但是对于某些接收控制器的人来说似乎从未接收到它。奇怪的是,当我使用 GET 请求时它可以工作,但由于它是需要存储在数据库中的有价值的数据,所以我更喜欢使用 POST。
我的 JSP 视图中的 javascript 代码:
function ajaxEdit(){
var aData = oTable.fnGetData( iPos );//get data of the clicked row
var id = aData[0];
var data = {
id : id,
name : $('#editName').val(),
email : $('#editEmail').val(),
phoneNumber : $('#editPhoneNumber').val(),
address : $('#editAddress').val(),
city : $('#editCity').val(),
postalCode : $('#editPostalCode').val(),
funct : $('#editFunction').val(),
company : $('#editCompany').val(),
};
$.ajax({
type : "POST",
contentType: "application/json; charset=utf-8",
url : "ajaxEditPerson.htm",
dataType: "json",
data : JSON.stringify(data),
success : function(response) {
alert(response);
},
error : function(e) {
alert('Error: ' + e);
}
});
}
还有我的弹簧控制器:
@RequestMapping(value = "ajaxEditPerson", method=RequestMethod.POST)
public @ResponseBody
String ajaxEditPerson(@RequestBody Person person, HttpServletRequest request){
System.out.println("received edit request: " + person.toString());
//Save edited item in database
personManager.addPerson(person);
return "okay";
}
我在这里做错了什么?由于第一行打印从未执行,因此该请求似乎根本没有到达此方法。此外,javascript 代码中的错误代码警报总是给我这个“错误:对象对象”错误。我还在 maven 中添加了以下 2 个依赖项:
<!-- Jackson JSON Mapper -->
<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>
</dependencies>
编辑:
我已将控制器方法参数更改为:
@RequestMapping(value = "ajaxEditPerson", method=RequestMethod.POST)
public @ResponseBody
String ajaxEditPerson(@ModelAttribute("person") Person person, HttpServletRequest request, HttpServletResponse response){
System.out.println("received edit request: " + person.toString());
return "okay";
}
现在执行打印,所以至少请求已经到达了方法。但是它包含的数据都是 NULL 并且 ajax 请求仍然会收到错误响应而不是成功的响应....
EDIT2:
我现在可以成功执行 ajax GET 和 POST 请求,但没有 JSON。由于某种原因,json 似乎不起作用。控制器中的相应方法可以接收数据但说它为NULL。在使用 json 之前我还应该设置什么吗?配置文件中有什么?
EDIT3:
原来我需要在我的 spring 配置的下面一行:
<mvc:annotation-driven />
现在一切正常!
【问题讨论】:
-
我怀疑网址不正确
-
就像我说的,当使用具有相同 url 的 GET 时它工作正常...
-
成功后会有什么反应?
-
成功响应是“好的”,但错误响应是“错误:对象对象”。不知道那是什么意思..
-
表示方法中发生服务器端错误
标签: jquery ajax spring spring-mvc