2

ajax 呼び出しを行った後、エラー 405 メソッドが許可されていません。Spring 3.0.1、Spring-web 3.0.1 を使用しています。

これがコントローラーのマッピングです

@Controller public class 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!!");
    }
   });

});
4

5 に答える 5

0

こんにちは、同じエラーが発生しました。あなたと同じ @RequestMapping アノテーションでメソッドを RequestMethod.POST として言及したため、Ajax 呼び出しを get から post に変更することでこれを修正しました。

しかし、私はそのメソッドに get 呼び出しを行っていました。あなたのajax呼び出しをチェックしてください

于 2015-06-29T12:12:30.773 に答える
0

エラーが示す内容から、これが問題である可能性があります。

@RequestMapping(値 = "/ajaxaction"、メソッド = RequestMethod.POST、ヘッダー ="コンテンツ タイプ = アプリケーション/json")

firebug を使用して、リクエスト ヘッダーを確認できます。「コンテンツタイプ」のヘッダーはありますか?

于 2012-12-12T09:39:58.370 に答える
0

contentType: 'application/json'ajax オプションを使用してリクエストのコンテンツ タイプを設定してみてください 。

$('#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!!");
  }
   });

});
于 2012-12-12T09:41:27.540 に答える
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)
于 2012-12-12T09:42:46.723 に答える