我正在使用jQuery Datatable插件,我想在控制器操作中获取发送到服务器的默认参数,如链接所示。
这是我的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: " );
}
请求被发送到服务器并且action方法被称为body,但是body.asJson()和body.asText()总是为null,如下图所示。
请求参数作为application / json传递,在这里纠正我如果我错了,那么为什么body.asJson()为null,如何在action方法中获取所有请求参数?我正在使用Play 2.4.2版本(Damiya)。
答案 0 :(得分:1)
您的请求以application/x-www-form-url-encoded
发送,请参阅Content-type
标题。您需要使用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。