0

我有一个fetchGroups()使用数据表插件构建分页数据表的 javascript 函数。传入的请求是 GET 请求。我需要将一个fetchMemberGroups对象与请求一起传递。我尝试使用请求正文发送请求。但它似乎不起作用并不断抛出500-Internal Server Error. 我也不相信我可以通过 GET 传递请求正文。然后,我尝试通过fetchMemberGroups在服务方法上附加 @PathParam 注释来传递对象和 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) {
}
4

1 回答 1

0

编辑:

您不应该使用 oTable api 设置参数以发送到服务器...因为 oSettings 尚不存在,oTable 尚未创建,因此没有 oSettings

您不必指定框架在服务器端实现中自动创建的 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 打开 url?

于 2013-08-13T16:46:15.587 回答