【问题标题】:jqgrid not work on IE8jqgrid 在 IE8 上不起作用
【发布时间】:2015-03-10 06:52:43
【问题描述】:

我下面的代码不适用于 IE 8。 它是一个 JQGrid(treegrid),用于显示来自 json 服务器的 treegrid 格式。它在 Firefox 中工作。

$(function () {
    "use strict";
    $("#tree").jqGrid({
        url: "http://myJSON-URL/",
        datatype: "json",

        colNames: ['id', 'Prestations'],
        colModel: [
                { name: 'id', width: 100, key: true, hidden: true },
                { name: 'name', width: 785, sortable: false }
            ],
        sortname: 'id',
        sortorder: "asc",
        hiddengrid: true,
        gridview: true,
        treeGrid: true,
        treeGridModel: "adjacency",
        ExpandColumn: 'name',
        ExpandColClick: true,
        jsonReader: { repeatitems: false, root: function (obj) { return obj; } },
        height: "auto"
    });
});

我认为它的 AJAX cors 问题。 任何的想法?谢谢。

json 服务器端响应了这些:

 json = [
{
    "id": "1",
    "name": "ECHANGEUR",
    "level": "0",
    "parent": "null",
    "isLeaf": false,
    "expanded": false,
    "loaded": true
},
{
    "id": "1_1",
    "name": "Intervention Aller sur Site",
    "level": "1",
    "parent": "1",
    "isLeaf": false,
    "expanded": false,
    "loaded": true
},
{
    "id": "1_1_1",
    "name": "Date et heure d'arrivée sur le site",
    "level": "2",
    "parent": "1_1",
    "isLeaf": true,
    "expanded": true,
    "loaded": true
},
{
    "id": "1_1_2",
    "name": "Consignation de l'échangeur",
    "level": "2",
    "parent": "1_1",
    "isLeaf": true,
    "expanded": true,
    "loaded": true
}

];

【问题讨论】:

  • 了解您使用的 jqGrid 版本很重要?哪种格式有输入数据?您应该使用测试 JSON 数据附加您的问题。我建议您尝试使用免费的 jqGrid 4.8。您可以直接从CDN 访问或从githib 下载。在readmewiki 中查看详细信息。
  • 我建议您另外包含 loadError 回调(请参阅 here),以确保在 JSON 或其他 Ajax 错误的任何解析问题(如 CORS 特定问题)时看到错误消息存在。
  • jqGrid 4.7.1。问题不在于 jqGrid。我的 IE 8 部分支持通过 ajax 加载。

标签: jqgrid internet-explorer-8


【解决方案1】:

您遇到了jqGrid 4.7.x 特有的错误。您可以尝试使用不同版本的 jqGrid 以及您发布的相同代码和 JSON 的树演示:

demo46demo47demo48demo-free-jqGrid-GitHub

(最后一个使用我最近发布的free jqGrid 4.8,见herehere)。

您可以验证使用jqGrid 4.7的demo只有IE8有问题,其他demo都没有问题。您可以阅读更多关于该错误的信息 herehere

【讨论】:

  • 我在 IE8 上的问题是:我使用本地 html 文件打开它。这是我忽略的项目告诉你。
  • @hahamed:抱歉,我不明白你的意思。 local html 文件有什么问题?您可以在 demo47 演示中重现相同的错误吗?演示 demo46 和 demo48 在您的测试计算机上是否正常工作?如果您有 local html 文件,那么您可能有 local 文件,其中包含您在url 中使用的 JSON 输入数据。我在我的演示中做了同样的事情,加载没有问题。如果在加载过程中确实有一些错误,则必须包含loadError 回调(请参阅here)。可能是您有纯 Ajax 加载错误。
  • 我打开本地 html 文件,我的本地脚本是:$("#tree").jqGrid({ url: "http://myJsonServer.com", datatype: "json", colNames: [...。但是treegrid没有在iE8上加载json并在firefox上加载数据
  • @hahamed:这个问题应该不仅仅存在于 IE8 中。对应Same-Origin-Policy 你不能从另一个源加载Ajax 数据作为HTML 文件的源。因此,服务器和客户端都必须明确通知 Ajax 允许从另一个源加载。服务器部分已经正确,您必须在 Ajax 中使用正确的客户端选项。例如datatype: 'jsonp' 就像the answer 一样。
  • @hahamed:好的,我很高兴来到这里。我在之前的 cmets 中的意思是,您可能有纯 cors 问题,您应该使用 jQuery 选项进行实验。解决方案可能取决于您未发布的许多因素,并且如果没有重现问题的工作(或不完整工作)演示,则无法解决这些因素。甚至您使用的 jQuery 版本也很重要。无论如何,您找到了解决方案都很好。
猜你喜欢
  • 2014-04-11
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
相关资源
最近更新 更多