我正在使用播放框架 2.0.4
我有一条路线:
POST /addMail 控制器.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 数据为空,但通过 curl 没问题。
我试图在我的方法上添加 @BodyParser.Of(play.mvc.BodyParser.Json.class) 但它不会改变任何东西。
谢谢你的时间。