繁体   English   中英

无法使用Play Framework从Ajax请求接收POST正文

[英]Unable to receive POST body from Ajax request using Play Framework

我正在尝试将一些JSON数据发送到POST请求到后端。 来自前端的呼叫如下所示:

function register() {
  var user = $("#form_reg_username").val();
  var pass = $("#form_reg_password").val();
  var referal = $("#form_reg_referal").val();
  var postbody = {};
  var url = "http://" + location.host + "/api/admin/register";
  postbody.username = user;
  postbody.password = pass;
  postbody.referal = referal;

  var jsonbody = JSON.stringify(postbody);
  console.log(jsonbody);

  $.ajax({
    type: "POST",
    url: url,
    data: jsonbody,
    dataType: "json",
    success: registerHandler()
  });
}

生成的日志如下所示:

{"username":"jakob","password":"11111","referal":"urgotislove"}

没关系

这是我如何在后端处理请求的开始(我正在使用播放2.4)

 public Result adminRegister() {
        // Generate JSON from postbody
        ObjectNode json = Json.newObject();

        Logger.info("Body: " + request().body().asText());
        JsonNode body = request().body().asJson();

        String username = body.get("username").asText();
        String password = body.get("password").asText();
        String referal = body.get("referal").asText();
        ...
}

查看我的应用程序日志,信息日志如下所示:

[info] application - Body: null

然后,在尝试获取json值的第一行中,我得到了Nullpointer异常。

因此,出于某种原因,似乎无法正确接收POST正文。

感谢您的任何帮助。

事实证明Postbody已正确传输,但是由于某种原因.asText()以及.asJson()方法无法正常工作并返回null。

我通过以下解决方法解决了问题:

Http.RequestBody requestBody = request().body();
Map<String, String[]> body = requestBody.asFormUrlEncoded();

String username = body.get("username")[0];
String password = body.get("password")[0];
String referal = body.get("referal")[0];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM