2012-12-12 5 views
2

ajax 호출을 한 후에 에러 405 메소드가 허용되지 않는다. Spring 3.0.1, Spring-web 3.0.1을 사용하고 있습니다.스프링에서 Ajax 요청 매핑하기 MVC : 에러 405 메소드가 허용되지 않는다

함수 : 여기서

컨트롤러 매핑을

@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("[email protected]"); 
    e1.setTelephone("1111111111"); 
    e1.setReturnMessage("Message one!!"); 
    Employee e2 = new Employee(); 
    e1.setFirstName("Ajay"); 
    e1.setLastName("Singh"); 
    e1.setEmail("[email protected]"); 
    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!!"); 
    } 
    }); 

}); 
오류가 지시 한 것과

답변

0

, 이것은 문제가 될 수 있습니다

@RequestMapping (값 = "/ ajaxaction" 방법 = RequestMethod.POST = "콘텐츠 유형 = 응용 프로그램/JSON" 헤더)

요청 헤더를 확인하기 위해 방화 광구를 사용할 수 있습니다. "content-type"에 헤더가 있습니까?

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

}); 
0

스프링 컨트롤러의 JSON 응답을 사용할 때 수락 헤더를 정의해야합니다. 기본적으로 Spring은 Accept 헤더를 html로 정의한다. 추가 헤더 :

headers = "Accept=application/json" 

이 방법 주석을 수정하고 변경이 좋아 :

@RequestMapping(value = "/ajaxaction", 
     method = RequestMethod.POST, 
       headers ="Accept:*/*") 
public @ResponseBody Collection<Employee> serveAjaxRequest(@RequestBody ReqParam reqParam) 
+0

에서 "/ ajaxaction" 방법 = RequestMethod.POST, 을 값을 도움을하는 RESTful 웹 서비스에 대한 크로스 원산지 요청을 사용 \t \t headers = { "Accept = application/json", "Content-Type = application/json"}) 그러나 여전히 동일한 문제가 있습니다. "Accept = application/json"설정은 XMLHTTPREQUEST가 게시 한 JSON 데이터를 수락하는 데 도움이되었습니다. –

+0

헤더를 headers = "Accept : */*"로 변경하십시오. –

+0

헤더를 헤더 작성 후 "Accept : */*". 지원되지 않는 미디어 유형 오류 415가 발생합니다. –

0

안녕하세요 저도 같은 오류가 발생했습니다 내가 방법을 언급 때문에 나는 내 Ajax 호출을 변경 게시 할 수하여 고정 내 @RequestMapping 주석의 RequestMethod.POST와 같습니다.

하지만 그 메소드를 호출하고 있습니다. 귀하의 아약스 전화 확인

0

내가 요청 매핑 @RequestMapping을 수정 = (here

관련 문제