2013-06-25 21 views
5

我想用jquery.I從網格中讀取數據。當我在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

您的網頁是否有有效的文檔類型? – 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

我建議你包括

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

在你的XHTML文檔的<head>開始。它將關閉頁面的「兼容性視圖」。前一段時間,我在官方的jqGrid wiki上找到了所有代碼示例中的代碼行(請參閱here),因爲您描述的問題很常見。

+1

你好,我包含上面的標記,但我仍然得到錯誤 – AbtPst

1

正如在評論中提到的,你需要一個正確的文檔類型來強制IE離開怪癖模式。看起來您使用的是XHTML文檔類型,它與HTML5的某些方面不兼容。嘗試在HTML頁面的第一行使用HTML5文檔類型:<!DOCTYPE html>

下面是關於不同文檔類型及其與HTML5關係的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

相關問題