在Spring MVC中Map AJAX 请求:获取错误405不允许的方法

ercv8c1e  于 2022-11-14  发布在  Spring
关注(0)|答案(5)|浏览(179)

在 进行 ajax 调用 后 , 我 得到 错误 405 方法 不 被 允许 。 我 使用 的 是 Spring 3.0.1 , Spring-web 3.0.1 。
下面 是 控制 器 Map
@控制 器 公共 类 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 代码 :
函数 : 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!!");
    }
   });

});

格式

clj7thdc

clj7thdc1#

根据错误所述,这可能是您的问题:
@请求Map(值=“/ajaxaction”,方法=请求方法.POST,头=“内容类型=应用程序/json”)
你可以使用firebug来检查请求的头。是否有“content-type”的头?

vdgimpew

vdgimpew2#

尝试在 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!!");
  }
   });

});
ozxc1zmp

ozxc1zmp3#

使用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)
elcex8rz

elcex8rz4#

大家好,我遇到了同样的错误,我通过将 AJAX 调用从get更改为post来修复这个错误,因为我在@RequestMapping注解中提到了方法RequestMethod.POST,这和您一样。
但是我正在对那个方法进行get调用。检查你 AJAX 调用

omvjsjqw

omvjsjqw5#

为REST风格的Web服务启用跨源请求,请参阅here

相关问题