无法使用Play框架从Ajax请求中接收POST正文
Unable to receive POST body from Ajax request using Play Framework
我正试图发送POST请求到我的后端与一些JSON数据。来自前端的调用看起来像这样:
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"}
很好。
这是我如何处理后端请求的开始(我使用play 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日志是这样的:
[info] application - Body: null
我然后得到一个空指针异常在第一行试图获得json值。
由于某些原因,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];
相关文章:
- 使用 postman.setNextRequest() 在发送之前填充请求正文
- IE9 XMLHTTPRequest请求正文不完整,但readyState=4 statuscode=200
- “发送后无法设置标头”和空发布请求正文
- Angular 中的 HTTP 服务将 POST 数据作为请求正文的键发送,没有值
- 如何迭代请求正文中的对象数组
- 从chrome扩展拦截HTTP请求正文
- 如何在请求正文中传递变量
- http模块(node.js和browserfy的)没有't使用方法PATCH写入请求正文
- 具有分块请求正文的XmlHttpRequest
- Phonegap文件上传:空请求正文和文件
- 在触发特定 POST 请求时修改 HTTP POST 请求正文(post 参数)
- 快递.js请求正文__proto__
- 如何使用 jQuery $.ajax() 时使用 GET 在请求正文中发送数据
- Backbone.model.save 在请求正文中发送整个 backbone.model
- 邮件的快速请求正文未定义
- 使用jQuery'在请求正文中发送一个对象;s$.load()函数
- HTML SSE请求正文
- 请求正文为空,使用快速正文解析器
- AJAX请求正文空(没有jQuery)
- CORS:无法获取POST请求正文