5

我想用jquery制作网格。我从xml读取数据。当我在 Chrome 浏览器上运行它时,它可以工作。但是当我在 IE 上尝试它时,它会出现此错误。

Grid can not be used in this ('quirks') mode!

我写了这段代码:

var datasource_url = "/Data/XML_Data.xml";

  function makeID(string) {
    return string.toLowerCase().replace(/\s/g, "_")
  }
  $(function() {
    $.loadGrid = function() {
      $.ajax({
        cache: false,
        url :datasource_url ,
        dataType: "xml",
        success: function(data, res) {

         var colNames = new Array;
          var colIDs = new Array;
          var colModel = new Array;
          var datas = new Array;
          var metadata = $(data).find("metadata").each(function() {
            $(this).find('item').each(function() {
              var colname = $(this).attr('name');
              var colid = makeID($(this).attr('name'));
              var coltype = $(this).attr('type');
              var collength = $(this).attr('length');
              var sorttype = null;
              var sortable = false;
              switch(coltype) {
                case "xs:double":
                  sorttype = "float";
                  sortable = true;
                  break;
                case "xs:string":
                default:
                  sorttype = "text";
                  sortable = true;
                  break;

              }
              colNames[colNames.length] = colname;
              colIDs[colIDs.length] = colid;
              colModel[colModel.length] = {name: colid, index: colid, width: 200, align: "center", sorttype: sorttype, sortable: sortable}
            });
          });
          var options = {
            datatype: "local",
            height: 500,
            colNames: colNames,
            colModel: colModel,
            multiselect: false,
            caption : "Data Grid",
            rowNum : 1000,
            rownumbers: true
          }
          $("#datagrid").jqGrid(options);
          $(data).find("data").each(function() {
            var i=0;
            $(this).find('row').each(function() {
              var idx = 0;
              var rowdata = new Object;
              $(this).find('value').each(function() {
                var ccolid = colIDs[idx];
                if (ccolid) {
                  rowdata[ccolid] = $(this).text();
                }
                idx++;
              })
              $("#datagrid").jqGrid('addRowData', i+1, rowdata)
              i++
            })
          })

        }
      })
    }
    $.loadGrid();
    /*
    $("#btnLoadGrid").click(function() { 
      //$(this).attr("disabled", "disabled")
      $.loadGrid();

    })
    */
  });


</script>

我怎样才能解决这个问题。

4

2 回答 2

10

我建议你包括

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

<head>在XHTML 文档的开头。它将关闭页面的“兼容性视图”。前段时间,我在官方 jqGrid wiki(参见此处)上找到的所有代码示例中都包含了该行,因为您描述的问题很常见。

于 2013-06-25T12:33:07.810 回答
1

正如评论中提到的,您需要一个正确的文档类型来强制 IE 退出怪癖模式。看起来您使用的是 XHTML 文档类型,它与 HTML5 的某些方面不兼容。尝试在 HTML 页面的第一行使用 HTML5 文档类型:<!DOCTYPE html>

这是一篇关于不同文档类型及其与 HTML5 关系的好文章。

于 2013-06-25T12:05:35.863 回答