json - 从 JSON 数据设置 JqGrid colUmn 和 co Model

标签 json jqgrid

我正在尝试在服务器上生成列名称列表和列模型并将其提供给 JqGrid。 我已成功生成 JSON 并通过 XHR 将其传递给客户端,没有任何提示。但是,网格本身并没有显示出来。我看到网格的一列,顶部有网格的折叠/展开按钮。

这是 JavaScript 调用:

var col_names = [];
var col_model = [];
...
...

jQuery(document).ready(function() {
  //XHR to get col_names and col_model
  $.ajax({url: 'http://localhost:8080/metadata',
          success: function(data) {
            col_names = data.names;
            col_model = data.model;
          }
  });
jQuery("#list").jqGrid({
    url:'http://localhost:8080:/data?level=0',
    datatype: 'json',
    mtype: 'GET',
    colNames: col_names,
    colModel: col_model,
    ...
    ...

这是 JSON:

{
    "model": [{"index": "pid", "name": "pid"},
              {"index": "p1", "name": "p1"},
              {"index": "p2", "name": "p2"}],
    "names": ["PID", "P1", "P2"]
}

如果我对 colModel 进行硬编码,则会显示网格。 顺便说一句,在响应 header 中,内容类型设置为“application/json”。

TIA

最佳答案

在您发布的代码中,您将在 AJAX 调用完成之前初始化 jqGrid:

jQuery(document).ready(function() {
  //XHR to get col_names and col_model
  $.ajax({url: 'http://localhost:8080/metadata',
          success: function(data) {
            col_names = data.names;
            col_model = data.model;
         }
 });
jQuery("#list").jqGrid({
...

您需要重新定位 success 函数中的 jqGrid 代码,或者在调用 $.ajax 时将 async 选项设置为 false >.

当 AJAX 调用挂起时,您可以在页面上显示微调器等以保持用户忙碌。

关于json - 从 JSON 数据设置 JqGrid colUmn 和 co Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3308856/

相关文章:

android - Retrofit 2 - 是否可以获得我发送和接收的 JSON 的大小?

javascript - jqgrid 日期时间格式化

jqgrid - 在 jqgrid 中拖放行

javascript - 在第一列对 jqgrid 进行排序

json - Django HTTP 发布到相同的 URL

java - 如何将 List<object> 转换为 org.json.JSONArray?

javascript - 如何使用 Jekyll _data 目录中的 JSON?

jquery - jqGrid - 在 GridView 中隐藏列,但在编辑表单中显示它们

javascript - 使用 jqGrid 将列显示为行

json - Moxy、JSON 和 Jersey 2.0 不会反序列化纯字符串数组