播放获取json请求参数
Play get json request parameters
我正在使用 jQuery Datatable 插件,我想在我的控制器操作中获取发送到服务器的默认参数,如 link.
中所示
这是我的ajax请求代码
$(document).ready(function() {
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "getTable",
"type": "POST"
}
} );
} );
这是我的控制器操作代码
public Result ajaxDisplayTable() {
Logger.info("This is just another method for ajax post action call...");
String userAgent = request().getHeader("User-Agent");
Logger.info("user agent = "+ userAgent);
RequestBody body = request().body();
Logger.info("bare body = "+ body);
Logger.info("json ... "+ body.asJson());
Logger.info("body as json = " + body.asText());
return ok("Got json: " );
}
请求被发送到服务器并且打印了调用正文的操作方法,但是 body.asJson() 和 body.asText() 始终为空,如下图所示。
并且如下图所示
请求参数以application/json的形式传递,请纠正我如果我错了,那么为什么body.asJson()为null,如何在action方法中获取所有请求参数?我正在使用 Play 2.4.2 版本(Damiya)。
您的请求已作为 application/x-www-form-url-encoded
发送,请参阅 Content-type
header。您需要使用 body.asFormUrlEncoded()
而不是 body.asJson()
。
public Result ajaxDisplayTable() {
RequestBody body = request().body();
final Map<String, String[]> values = body.asFormUrlEncoded();
final String valDraw = values.get("draw")[0];
}
有关详细信息,请参阅 Body parsers。
我正在使用 jQuery Datatable 插件,我想在我的控制器操作中获取发送到服务器的默认参数,如 link.
中所示这是我的ajax请求代码
$(document).ready(function() {
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "getTable",
"type": "POST"
}
} );
} );
这是我的控制器操作代码
public Result ajaxDisplayTable() {
Logger.info("This is just another method for ajax post action call...");
String userAgent = request().getHeader("User-Agent");
Logger.info("user agent = "+ userAgent);
RequestBody body = request().body();
Logger.info("bare body = "+ body);
Logger.info("json ... "+ body.asJson());
Logger.info("body as json = " + body.asText());
return ok("Got json: " );
}
请求被发送到服务器并且打印了调用正文的操作方法,但是 body.asJson() 和 body.asText() 始终为空,如下图所示。
并且如下图所示
请求参数以application/json的形式传递,请纠正我如果我错了,那么为什么body.asJson()为null,如何在action方法中获取所有请求参数?我正在使用 Play 2.4.2 版本(Damiya)。
您的请求已作为 application/x-www-form-url-encoded
发送,请参阅 Content-type
header。您需要使用 body.asFormUrlEncoded()
而不是 body.asJson()
。
public Result ajaxDisplayTable() {
RequestBody body = request().body();
final Map<String, String[]> values = body.asFormUrlEncoded();
final String valDraw = values.get("draw")[0];
}
有关详细信息,请参阅 Body parsers。