【问题标题】:JQWidgets - Jqxgrid "no data to display", JSON Parse errorJQWidgets - Jqxgrid“没有要显示的数据”,JSON 解析错误
【发布时间】:2015-05-23 16:42:25
【问题描述】:

我按照这个例子的步骤(http://www.jqwidgets.com/jquery-widgets-documentation/documentation/java-integration/bind-jquery-grid-to-mysql-database-using-jsp.htm),但是没有数据可以显示。

jqxgrid.jsp 文件:

ResultSet result = state.executeQuery(sql1);
JsonArray recordsArray = new JsonArray();
while (result.next()) {
    JsonObject currentRecord = new JsonObject();
    currentRecord.add("id",
            new JsonPrimitive(result.getString("id")));
    currentRecord.add("name",
            new JsonPrimitive(result.getString("name")));
    recordsArray.add(currentRecord);
}

out.print(recordsArray);
out.flush();

在jsp文件中我可以得到JsonArray的结果:

[{"id":"57","name":"aa"},{"id":"58","name":"qq"},{"id":"59"," name":"ii"},{"id":"60","name":"jenny"},{"id":"61","name":"candy"},{"id":" 62","name":"f"},{"id":"63","name":"pp"},{"id":"66","name":"kkk"}]

jqxgrid.html 文件:

 $(document).ready(function () {
        
        var source = {
            datatype: "json",
            datafields: [{name: 'id'}, 
                         {name: 'name'}],
           url:"jqxgrid.jsp"
        };
       
        var dataAdapter = new $.jqx.dataAdapter(source, {
            downloadComplete: function (data, status, xhr) { },
            loadComplete: function (data) { },
            loadError: function (xhr, status, error) {alert('Status ='+ status +',  Error ='+ error ); }
        });
        $("#jqxgrid").jqxGrid({
            width: 400,
            autoheight: true,
            source: dataAdapter,
            columns: [{
                text: 'ID',
                datafield: 'id',
                width: 200
            }, {
                text: 'Name',
                datafield: 'name',
                width: 200
            }]
        });
    });

输出中有网格,但没有显示数据。 (抱歉,我无法发布图片。)

出现错误:

Status =parsererror, Error =SyntaxError: JSON Parse error: Unrecognized token '

我该如何解决这个问题?谢谢!

【问题讨论】:

  • 试试virtualMode=true :-)
  • 感谢您的帮助!但是还是……,没有任何变化,网格也消失了。
  • 正如错误所解释的那样,在您的 jqxgrid.jsp 上构建的 JSON 存在问题,因此请尝试仔细检查
  • 也尝试添加response.setContentType("application/json");
  • 非常感谢!我已经将它添加到我的jsp文件中,但仍然无法正常工作。构建json有什么问题吗?

标签: javascript json jsp jqxgrid jqwidget


【解决方案1】:

我认为您的问题是您没有输入源数据描述(客户端)。第 4 条记录的 id 是 60,恰好是

如果您将类型 datafields:[{name:'id',type:'int'}, 添加到 var source = { 这可能会解决您的问题。您也可以使用 'number' 作为 id 的类型。将'string' 类型添加到name 字段也可能会有所帮助。

希望这对你有用。

【讨论】:

  • 非常感谢!我已向我的数据字段添加类型,但它仍然无法正常工作。实际上我已经尝试了很多类型的数据,包括 jqwidget 的示例数据库。这些都没有奏效。只有当我使用本地数据或远程数据时(比如这个:jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/index.htm#demos/…)。所以我认为这个问题可能来自json格式。
  • 如果您提供的 JSON 示例是您正在使用的示例,则该文件没有问题。在控制台中,您可以键入 JSON.parse(jsonString),其中 jsonString 是 JSON 文件内容。在空白页面上执行此操作,然后在 jpxgrid 页面上执行此操作。他们可能正在为 JSON.parse 使用 polyfill,或者可能有自己的 json 解析器。这就是我怀疑问题所在,因为您的 JSON 字符串没有任何问题。
  • 如果没有帮助,请尝试检查 JSON jsp 文件的 MIME 类型。官方应该是 application/json 但你也可以使用非官方的 `text/json' 或 'text/javascript' 用于 jsp MIME 类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多