将DataTables插件与GET请求一起使用以传递requestbody

Using DataTables Plugin with GET requests to pass requestbody

本文关键字:requestbody 一起 插件 DataTables GET 请求      更新时间:2023-09-26

我有一个javascript函数fetchGroups(),它使用数据表插件构建一个分页数据表。传入的请求是GET请求。我需要在请求的同时传递一个fetchMemberGroups对象。我尝试使用请求正文发送请求。但它似乎不起作用,并不断抛出500-Internal Server Error。我也不相信我可以通过GET传递请求体。然后,我试图通过在服务方法上附加@PathParam注释来传递fetchMemberGroups对象和URL。有人能告诉我如何在不将服务类型更改为POST或PUT的情况下将此对象传递给服务吗。

function fetchGroups() {
var fetchMemberGroups = new Object();
fetchMemberGroups.sEcho = 0;
$("#displayGroupsTable").dataTable({
    "bServerSide": true,
    "sAjaxSource":"api/groupService/groups", 
    "bProcessing": true,
    "bJQueryUI": true,
    "bRetrieve": true,
    "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) { 
        fetchMemberGroups.iDisplayStart=oSettings._iDisplayStart;
        fetchMemberGroups.iDisplayLength=oSettings._iDisplayLength;
        fetchMemberGroups.sEcho=fetchMemberGroups.sEcho+1;
        oSettings.jqXHR=$.ajax( { 
            "contentType" : 'application/json',
             "dataType": 'json',
             "type": "GET",
             "url": sSource, 
             "data": JSON.stringify(fetchMemberGroups),
             "success": fnCallback
        });},
        "aoColumns": [
                      { "mData": "groupName" },
                      { "mData": "numberOfMembers"},
                      { "mData": "distinguishedName"}
                  ]
});
}

服务器端代码:

@GET
@Path("groups")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({MediaType.APPLICATION_JSON})
public Response getGroups(@Context HttpServletRequest request, PagingObject fetchGroupsObject) {
}

编辑:

您不应该使用oTableapi来设置要发送到服务器的参数。。。因为o设置还不存在,oTable还没有创建,所以没有o设置

您不应该指定sEcho、iDisplayStart、iDisplayLength,这些都是由框架在服务器端实现中自动创建的

你需要做的是在你的查询中评估它们,以获得你的结果限制,等等

如果可以的话,我建议您尝试以下操作,看看它是否在firebug/chrome工具的网络检查器中返回任何内容

"fnServerData": function ( sSource, aoData, fnCallback ) {
                        $.getJSON( sSource, aoData, function (json) {
                            fnCallback(json);
                        });

上一个

我很确定你的fnServerData是关闭的,或者至少它不像我看到的

通常我会做类似的事情,其中lastname是一个额外的参数,作为getJSON,你知道它是一个get:

"fnServerData": function ( sSource, aoData, fnCallback ) {
    aoData.push( { "name" : "LastName", "value" : "$('#LastName').val()" } );
                        $.getJSON( sSource, aoData, function (json) {
                            fnCallback(json);
                        });

500错误还表明url不存在,你有没有尝试过自己打开url,而不是从ajax打开?