在进行ajax调用后,我得到错误405方法不允许。我使用的是Spring 3.0.1,Spring-web 3.0.1。
这是控制器映射
@Controller 公共类AjaxController {
@RequestMapping(value = "/ajaxaction",
method = RequestMethod.POST,
headers ="content-type=application/json")
public @ResponseBody Collection<Employee> serveAjaxRequest(@RequestBody ReqParam reqParam){
List<Employee> empList = new ArrayList<Employee>();
System.out.println("Req obj:: " + reqParam.getA() + " " + reqParam.getB()
+ " " + reqParam.getC() + " " + reqParam.getD() + " " + reqParam.getE());
Employee e1 = new Employee();
e1.setFirstName("Vaibhav");
e1.setLastName("Raj");
e1.setEmail("vraj3@sapient.com");
e1.setTelephone("1111111111");
e1.setReturnMessage("Message one!!");
Employee e2 = new Employee();
e1.setFirstName("Ajay");
e1.setLastName("Singh");
e1.setEmail("asingh@gmail.com");
e1.setTelephone("2222222222");
e1.setReturnMessage("Message two!!");
empList.add(e1);
empList.add(e2);
return empList;
}
)
和ajax调用的Jquery代码:
function:submitAjax(){
$('#g').bind('click', function(evt) {
alert($('form').serialize());
formData = $('form').serialize();
$.ajax({
url: "/ajaxaction.html",
type: 'POST',
dataType: 'json',
data: formData,
success: function(data) {
alert(data);
},
error: function(){
alert("Error!!");
}
});
});
答案 0 :(得分:0)
从错误中可以看出,这可能是您的问题:
@RequestMapping(value =“/ ajaxaction”, method = RequestMethod.POST, headers =“content-type = application / json”)
您可以使用firebug检查请求标头。是否有“内容类型”标题?
答案 1 :(得分:0)
尝试使用设置请求内容类型
ajax选项中的contentType: 'application/json'
。
$('#g').bind('click', function(evt) {
alert($('form').serialize());
formData = $('form').serialize();
$.ajax({
url: "/ajaxaction.html",
type: 'POST',
dataType: 'json',
data: formData,
contentType: 'application/json',
success: function(data) {
alert(data);
},
error: function(){
alert("Error!!");
}
});
});
答案 2 :(得分:0)
当使用Spring控制器的JSON响应时,您需要定义Accept标头。默认情况下,Spring将Accept标头定义为html。 添加标题:
headers = "Accept=application/json"
修改方法注释并将其更改为:
@RequestMapping(value = "/ajaxaction",
method = RequestMethod.POST,
headers ="Accept:*/*")
public @ResponseBody Collection<Employee> serveAjaxRequest(@RequestBody ReqParam reqParam)
答案 3 :(得分:0)
您好我得到了同样的错误,我通过将Ajax调用从get更改为post来修复此问题,因为我在@RequestMapping注释中提到了与您一样的RequestMethod.POST方法。
但我正在打电话给那个方法。检查你的ajax电话
答案 4 :(得分:0)
启用RESTful Web服务的跨域请求,从here
获取帮助