【问题标题】:jqGrid is emptyjqGrid 为空
【发布时间】:2016-01-02 20:13:45
【问题描述】:

我正在构建一个小型应用程序。我有一个 PHP 代码,里面有一个 jqGrid 的创建,还有一个 servlet,它发送一个数组的 string,里面有 JSON。

字符串如下所示:

[
    {"id":1,"firstName":"Amishay","lastName":"Vaturi"},
    {"id":2,"firstName":"Amir","lastName":"Bilu"},
    {"id":3,"firstName":"Michael","lastName":"Keidar"},
    {"id":4,"firstName":"Mika","lastName":"Spivak"},
    {"id":5,"firstName":"Ksenia","lastName":"Mosorov"},
    {"id":6,"firstName":"Rose","lastName":"Wahlem"}
]

问题是我在我制作的网格中没有看到它... 网格代码是这样的:

$("#jqGrid").jqGrid({
    url: 'http://10.0.0.4:8080/api/students/all',
    mtype: "GET",
    datatype: "jsonstring",
    colModel: [
 { label: 'ID', name: 'id', key: true, width: 75 , height: 50 },
 { label: 'First Name', name: 'firstName', width: 150 , height: 50},
 { label: 'Last Name', name: 'lastName', width: 150 , height: 50}
    ],
    viewrecords: true,
    width: 780,
    height: 250,
    rowNum: 20,
    pager: "#jqGridPager"
});

我在这里和整个网络中寻找答案。 我看到我可能需要从服务器发送不同的 json。也许有更多信息,如记录、页数等。我还看到我可能需要在 jqGrid 属性中声明一个 json 阅读器。 我都做了。。还是不行。就像我没有找到100%解决我的问题的解决方案。 我很高兴得到一个有效的答案(:

非常感谢!

【问题讨论】:

  • HTTP 响应的body 通常是一个字符串。因此,如果您想从url 加载数据,则必须使用datatype: "json" 而不是datatype: "jsonstring"。我在答案中发布了更多详细信息。

标签: php jquery json jqgrid


【解决方案1】:

您的代码中的错误是使用datatype: "jsonstring" 而不是

datatype: "json"

顺便说一句,您不需要创建隐藏列id,因为jqGrid 将id 属性的值分配给行的id 属性(<tr> 元素)。此外,我建议您使用loadonce: true 选项,因为您使用的数据格式并不意味着服务器端分页。

我创建了演示 https://jsfiddle.net/OlegKi/oc7uuh9q/,它使用您的数据来证明一切都应该正常工作。我只是稍微修改了您的代码,以使用 free jqGrid 中实现的新功能,这是我开发的 jqGrid 的分支。

【讨论】:

  • 首先 - 非常感谢!其次,我做了一个获取请求而不是发布请求(我不知道是否需要更改某些内容,因为除了键“mtype”之外)。但是我的 servlet 只返回我发布的字符串。它不应该在响应中发送页码、总记录数等吗?谢谢!
  • 它对我不起作用。你提供了什么。顺便说一句 - id 不是网格的 id。这是数据库中学生的 id。我从 servlet 返回的 json 字符串是我发布的。我不知道是什么问题..即使是chrome调试器也没有错误...
  • @NikolaiJakov:不客气!我使用 POST 是因为 JSFiddle 的 Echo 服务不支持 GET,但都以相同的方式工作。你试过datatype: "json"吗?工作吗?无论如何,如果您希望 jqGrid 使用urlmtype,则必须使用datatype: "json"。如果您使用datatype: "jsonstring",那么 jqGrid 期望数据已经以字符串形式存在于本地。它从datastr参数中读取数据。
  • @NikolaiJakov:您能否使用 Chrome 或 Fiddler 进行 HTTP 跟踪,然后在 HTTP 正文中返回 exact data 附加您的问题。可能是您的数据看起来不像您发布的,但例如像 "[{\"id\":1, ....
  • 数据类型的改变不起作用..但我明白。无论如何它必须是json。缺少其他东西...可以将 GET 用作 mtype 吗,因为从我看到的演示中,他们使用了 get 并且我以这种方式实现了 servlet...
猜你喜欢
  • 2014-05-23
  • 2023-04-02
  • 2023-03-28
  • 2015-07-06
  • 1970-01-01
  • 2011-10-14
  • 2016-08-18
  • 1970-01-01
  • 2014-04-07
相关资源
最近更新 更多