2013-06-25 16 views
5

jquery.Iでグリッドを作成したいのですが、XMLからデータを読み込みます。私はそれをChromeブラウザで実行すると動作します。しかし、IEで試してみると、このエラーが発生します。グリッドはこの( 'quirks')モードで使用できませんエラー

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> 

は、どのように私はこの問題を解決することができます。

+0

ページに有効なdoctypeがありますか? – Turnip

+0

そうだと思います。私はこれを使用します:<!DOCTYPE html PUBLIC " - // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> –

+0

@ 3rror404しかしIEで私はそれを実行しようとするとエラーが発生し、f12を押してこれを取得します:<! - DOCTYPE HTML PUBLIC " - // W3C // DTD HTML 4.0 Transitional // EN" - > –

答えて

10

私はあなたのXHTML文書の<head>の先頭に

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

を含めることをお勧めします。それはページの "互換性ビュー"をオフにします。以前は、公式のjqGrid wiki(hereを参照)で見つかったすべてのコード例にこの行を含めました。なぜなら、あなたが記述している問題は一般的であるからです。

+1

こんにちは、 – AbtPst

1

コメントに記載されているとおり、IEを強制的にクォークモードから外すには、正しいdoctypeが必要です。 XHTMLのdoctypeを使用しているようですが、これはHTML5のいくつかの側面と互換性がありません。 HTMLページの最初の行にHTML5のDoctypeを使用してみてください。<!DOCTYPE html>

ここでは、さまざまなdoctypesとその関係についてgood articleがあります。

+0

答えを与える、私は今しようとしています。 –

+0

これを<!DOCTYPE html PUBLIC " - // W3C // DTD XHTML 1.0 trict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">と置き換えます。 !DOCTYPE html>しかし、同じエラーが発生します。そして、私はf12を押しても、それでも<! - DOCTYPE HTML PUBLIC " - // W3C // DTD HTML 4.0 Transitional // EN" - > –

+0

ブラウザのキャッシュをクリアしようとしました – cfs

関連する問題