【问题标题】:jquery datatables doesn't show any data - json formatting errorjquery 数据表不显示任何数据 - json 格式错误
【发布时间】:2014-03-30 19:50:35
【问题描述】:

我有一张简单的桌子

<table class="datatable table table-striped table-bordered" id="usertable">
                <thead>
                    <th>Name</th>
                    <th>Surname</th>
                    <th>Username</th>
                </thead>
                <tbody>

                </tbody>
            </table>

这里是我的 javascript 代码。我想向spring控制器发送ajax请求并返回数据。

$(function() {
$('.datatable').dataTable({
    "sPaginationType": "bs_full",
    "sAjaxSource" : "loadusers.html",
    "aoColumns" : [
        {
            "sTitle" : "Name",
            "mData" : "name"
        },
        {
            "sTitle" : "Surname",
            "mData" : "surname"
        },
        {
            "sTitle" : "Username",
            "mData" : "username"
        }
     ]
});
$('.datatable').each(function(){
    var datatable = $(this);
    var search_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] input');
    search_input.attr('placeholder', 'Search');
    search_input.addClass('form-control input-sm');
    var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_length] select');
    length_sel.addClass('form-control input-sm');
});
});

在我的 spring 控制器中,我返回这样的数据

@RequestMapping("/loadusers.html")
@ResponseBody 
public String test(Model model) {        
    //get list of users
    //get list of logins for users
    logger.debug("TRY TO RETURN AJAX RESPONSE");

    return "{  \"name\" : \"name1\", \"surname\" : \"surname1\", \"username\" : \"username1\" }";
}

但它不起作用,我遇到了解析错误。

有什么问题?

【问题讨论】:

    标签: ajax spring-mvc datatable


    【解决方案1】:

    我改变了一些东西,现在效果很好

    Javascript

    $('.datatable').dataTable({
        "sPaginationType": "bs_full",
        "bProcessing" : true,
        "sAjaxSource" : "loadusers.html",
        "sAjaxDataProp" : "test"
    });
    

    控制器

    @RequestMapping("/loadusers.html")
    @ResponseBody 
    public String test(Model model) {        
        logger.debug("TRY TO RETURN AJAX RESPONSE");
    
        return "{ \"test\": [ "
                + "[ \"name1\", \"surname1\", \"username1\"],"
                + "[ \"name2\", \"surname2\", \"username3\"],"
                + "[ \"name2\", \"surname2\", \"username3\"]"
                + "] }";
    }
    

    【讨论】:

      【解决方案2】:

      您可能对 Jackson 映射器感兴趣,而不是返回一串 json。通过设置

      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
          <property name="webBindingInitializer">
              <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"/>
          </property>
          <property name="messageConverters">
              <list>
                  <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
              </list>
          </property>
      </bean>
      

      然后你可以直接返回对象转换成json

      @RequestMapping("/loadusers.html")
      @ResponseBody 
      public String test(Model model) {        
           // Compose your dataTable object
          return dataTable;
      }
      

      显然应该导入jackson。用maven

      <dependency>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>jackson-mapper-asl</artifactId>
          <version>1.9.9</version>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        • 1970-01-01
        • 2015-03-26
        相关资源
        最近更新 更多