私はプレイフレームワーク2.0.4を使用しています
私はルートを持っています:
POST /addMail controllers.Application.addMail()
私のコントローラーアプリケーションでは、 addMail メソッドを定義します:
public static Result addMail()
{
JsonNode json = request().body().asJson();
Long id = json.findPath("id").asLong(0);
String email = json.findPath("email").getTextValue();
GameScore gs = GameScore.findById(id);
gs.setEmail(email);
gs.save();
return ok();
}
CURL を介してこのメソッドを呼び出すと、問題はありません。
curl --header "Content-type: application/json" --request POST --data '{"id": 13, "email": "test@DB.com"}' http://localhost:9000/addMail
しかし、AJX リクエストを介してこのメソッドを呼び出すと、500 レスポンスが返されます。
$addMailBtn.click(function(event) {
$this = $(this);
var id = $this.attr("id").substring(14);
var email = $("#saisieMailField_" + id).val();
$.ajax({
type: 'POST',
url: "@routes.Application.addMail()",
dataType:"json",
data: {"id":id, "email": '"' + email + '"'},
success: location.reload()
})
} );
コンソールにjsonデータを出力すると、ajaxリクエストを実行するとjsonデータがnullになりますが、curlでは問題ありません。
メソッドに @BodyParser.Of(play.mvc.BodyParser.Json.class) を追加しようとしましたが、何も変わりません。
御時間ありがとうございます。