播放获取json请求参数

时间:2015-09-29 12:08:25

标签: playframework playframework-2.0 datatables playframework-2.4

我正在使用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,如下图所示。 enter image description here

如下图所示 enter image description here enter image description here

请求参数作为application / json传递,在这里纠正我如果我错了,那么为什么body.asJson()为null,如何在action方法中获取所有请求参数?我正在使用Play 2.4.2版本(Damiya)。

1 个答案:

答案 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