【问题标题】:ajax+json+jquery+datatables+spring mvcajax+json+jquery+数据表+spring mvc
【发布时间】:2015-01-20 04:35:36
【问题描述】:

我正在寻找一种在数据表中填充数据的方法,但数据没有输出。 我将逐步显示我的代码。

这是在控制器内部,包含虚拟数据。

@RequestMapping(value="/claim/prApplication",method=RequestMethod.POST)
public @ResponseBody DataTablesJsonModel getDataTableSelfClaim(@RequestBody String employeeId){
    HraPrmClaimApplication toShow=new HraPrmClaimApplication();
    toShow.setApplicationId((Integer)1);
    toShow.setDate("2015.01.01");
    toShow.setTotalAmount((double)200);
    toShow.setDocument("sample.pdf");
    toShow.setNote("");
    DataTablesJsonModel toReturn=new DataTablesJsonModel();
    toReturn.setAaData(toShow);
    System.out.print(toReturn);
    return toReturn;
}

这是在我的 jsp 页面中。

function loadSelfTable(){
            return initSingleSelectDataTable("#selfTable",null,null,"/",true,
            {
                "sDom": "<'row'<'col-xs-6'i><'col-xs-6'f>r>t<'row'<'col-xs-6'i><'col-xs-6'p>>",
                "sPaginationType": "bootstrap",
                "bPaginate": false,
                "bProcessing": true,
                "sAjaxSource": "${pageContext.request.contextPath}/hra/prm/claim/prApplication",    
                "fnServerData": function ( sSource, aaData, fnCallback ) {
                    $.ajax( {
                            dataType: 'json',
                            type: "POST", 
                            url:  sSource,
                            success:function(result){
                                if (result.aaData.code != null && result.aaData.code != '') {
                                    $('#errorMsgPanel > div > span').text(result.aaData.message);
                                    $('#errorMsgPanel').css("display", "block");
                                    fnCallback({aaData:[]});
                                }
                                else {                                                                          
                                    fnCallback(result); 
                                    alert(JSON.stringify(result));
                                }
                        },
                        error: function(jqXHR, textStatus, errorThrown) {
                            alert('<fmt:message key="ER0996" bundle="${messageBundle}"/>' + " (textStatus: " + textStatus + " errorThrown: " + errorThrown + " jqXHR.status: " + jqXHR.status + ")");
                        }
                    });
                },
                "aoColumns":[
                                {"mDataProp":"applicationId"},
                                {"mDataProp":"appDate"},
                                {"mDataProp":"amount"},
                                {"mDataProp":"status"},
                                {"mDataProp":"document"},
                                {"mDataProp":"note"},
                            ],
                "aaSorting": [],
            });

        } 

$(document).ready(function(){

                loadSelfTable();

        });

我的问题是当我提醒结果时,数据显示为字符串。 但是数据不会填充到表中。 如果您有任何想法,请帮助我。

【问题讨论】:

    标签: jquery ajax json datatable


    【解决方案1】:

    用 JSON.parse(result) 代替 JSON.stringify(result)

    您只返回结果。从您的控制器方法验证它是否生成“application/json”,否则将您的字符串转换为 json 对象。

    还有如下变化:

    @RequestMapping(value="/claim/prApplication",method=RequestMethod.POST, produces="application/json")
    

    【讨论】:

    • 真的很感谢您的回答,但这个仍然没有让我的表格填充。 :(
    • 仅更改请求映射不更改任何其他内容。如果它不起作用,则使用 fnCallback(JSON.parse(result)); 更改您的 fncallback 函数;
    • 我可以看看你的 initSingleSelectDataTable 因为你还没有写数据表的初始化,比如:$('#example').dataTable();
    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多