1

これは私のスプリングコントローラーです

@RequestMapping(value = "/app/{appId}/save.html",method=RequestMethod.POST)
public @ResponseBody String myFunction 
     (@PathVariable("appId") String id, @RequestBody Map<String, String> data1) {
                return "hello";
   }

これは私のajaxリクエストです

$.ajax({
                    type : 'POST',
                    url : '/app/${param.appID}/save.html',
                    data : JSON.stringify(myJsonData), 
                    dataType : "json",

                    success : function(data, textStatus,
                            xhr) {
                        var response = xhr.responseText;
                        if (response !== "hello") {
                            alert('sad');
                        } else {
                            alert('happy');
                        }
                    }
                });

問題は、このリクエストがコントローラーに到達せず、スタックしてしまうことです。data と data1 を削除すると、問題なく動作します。私が間違っていることを手伝ってくれる人もいます。

更新:firebugが示すエラーは次のとおりです

415 Unsupported Media Type : リクエスト エンティティが、リクエストされたメソッドのリクエストされたリソースによってサポートされていない形式であるため、サーバーはこのリクエストを拒否しました ()

ここに私のjsonオブジェクトがあります

myJsonData= {
                        "data1" : $("input[name=key1]:checked").val(),
                        "data2" : $("input[name=key2]:checked").val(),
                        "data3" : $("input[name=key3]:checked").val()
                };
4

2 に答える 2

0

JSON.stringifyは必要ありません。

data : myJsonData,

で十分です。

于 2012-05-17T09:27:59.697 に答える
0

明示的に設定consumes="application/json"してみてください@RequestMapping

于 2012-05-18T04:41:58.010 に答える