在play2中发布带有AJAX请求的JSON
我正在使用play framework 2.0.4 我有一条路线: POST/addMail控制器.Application.addMail() 在控制器应用程序中,我定义addMail方法:在play2中发布带有AJAX请求的JSON,ajax,json,post,frameworks,playframework-2.0,Ajax,Json,Post,Frameworks,Playframework 2.0,我正在使用play framework 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.findP
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可以
我试图补充一点
@Of(play.mvc.BodyParser.Json.class)
按我的方法,但这不会改变任何事情
谢谢你的时间。这对我来说很有用。请注意,我对JSON对象进行了字符串化,我认为这是您的问题
$.ajax({
type: "POST",
url: "http://myservice:9000/api/v1/positions",
data: JSON.stringify({"nwLng":72.22,"nwLat":22.22, "seLng":22.22,"seLat":55.33}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { alert(data); },
failure: function (errMsg) { alert(errMsg); }
});