jqGrid - 在IE中生成SCRIPT5007错误,但适用于localhost

时间:2015-02-20 15:56:36

标签: javascript jquery asp.net iis jqgrid

使用jqGrid 4.7.1,jquery 1.9.1&在Visual Studio Express 2012 for Web中使用jquery-ui 1.10.4并将页面作为默认网站发布到我的localhost上。 IIS版本是7.5。该包将XML从静态文件加载到可以搜索的网格中。

我可以在任何浏览器中调试VS Express 2012 for Web中的页面而不会出现错误。当我发布它时,它通过右键单击默认网站 - >部署在IIS中。部署 - >导入申请。部署程序包时会采用默认值。由于我在现有应用程序上安装,选项" 否,只需将应用程序包中的文件附加到目标。"被选中。包成功部署,并重新启动IIS。

使用当前版本的Chrome& Firefox没有问题。该网站运作良好&当通过URL http://localhost/myWebSite 访问时,网格在 IE11 中加载没有问题。但是,当通过计算机名称网址访问网站时,我在仅限IE 中收到以下错误: http://mymachine/myWebSite

产生的错误是: SCRIPT5007:无法获得属性&inner;内部HTML'未定义或空引用。 File:jquery.jqGrid.min.js,Line:64,Column:205

加载网格时会产生错误。我显示了网格页眉,页脚和列标题,以及" Loading"生成错误时的消息。使用 localhost 计算机名称 URL,网格可以很好地使用其他浏览器。其他用户可以使用 http://mymachine/myWebSite URL访问它,只要它们不在IE10或IE11上(我无法测试其他版本的IE)。

我有理由相信jqGrid设置正确。 colModel包含name,xmlmap和&所有列的宽度,除了3.其中两个在其中有索引,sorttype,formatter,formatoptions,第三个在其中有自定义格式化程序(超链接到pdf)。

知道问题可能是什么,或者解决问题的方法?任何输入将不胜感激。

修改

我将其更改为使用jquery.jqGrid.src.js脚本并在Firefox& Chrome没有问题。 IE虽然产生相同的SCRIPT5007错误。它位于第1447行第6列,它位于以下代码行中:

ts.firstElementChild.innerHTML += rowData.join(''); // append to innerHTML of tbody which contains the first row (.jqgfirstrow)

我的jqGrid代码,很简单:

 var createGrid = function () {
     $("#myGrid").jqGrid({
         url: "mydata.xml",
         xmlReader: {
  repeatitems: false,
  root: "Recordset",
  row: "Record",
  id: "[setEntry]"
         },
         dataType: "xml",
         colNames: [
  "Product",
  "Manufacturer",
  "Date Created",
  "Date Modified",
  "Image Link",
         ],
         colModel: [
  { name: "PROD_NAME", xmlmap: "Recordset>Record>PROD_NAME" },
  { name: "MFR", xmlmap: "Recordset>Record>MFR", width:175 },
  { name: "DATE_CREATED", xmlmap: "Recordset>Record>DATE_CREATED", width:125, index: "DATE_CREATED", sorttype:"date", formatter: "date", formatoptions: {srcformat:"F d, Y H:i:s", newformat:"Y-m-d H:i:s"}, datefmt:"Y-m-d H:i:s" },
  { name: "DATE_MODIFIED", xmlmap: "Recordset>Record>DATE_MODIFIED", width:125, index: "DATE_MODIFIED", sorttype: "date", formatter: "date", formatoptions: { srcformat: "F d, Y H:i:s", newformat: "Y-m-d H:i:s" }, datefmt: "Y-m-d H:i:s" },
  {
      name: "IMAGE", xmlmap: "Recordset>Record>IMAGE", width:100,
      formatter: function (cellValue, options, rowObject) {
         return '<a href="../Work_Documents/' + cellValue + '" target="_blank" >' + cellValue + '</a>';
    }
  }
         ],
         rowNum: 10,
         pager: jQuery("#pager1"),
         gridview: true,
         rownumbers: false,
         height: "auto",
         loadonce: true,
         autoencode: true,
         caption: "MyGrid",
         ignoreCase: true, // default is case-sensitive, this makes it case-insensitive
         hidegrid: false,
         altrows: true,
         recordtext: "View {0} - {1} of {2}",
         emptyrecords: "No Records to View",
         pgtext: "Page {0} of {1}"
     }).navGrid("#pager1", { edit: false, add: false, del: false}, {},{},{}, {multipleSearch: true, multipleGroup: true}, {searchtext: "Search" });
 };

数据结构如下。属性setEntry是XML文件中的唯一编号。

<Recordset>
   <Record setEntry="1">
      <PROD_NAME>MyProduct</PROD_NAME>
      <MFR>ABC D and Company</MFR>
      <DATE_CREATED>September 30, 2014 14:41:36</DATE_CREATED>
      <DATE_MODIFIED>September 30, 2014 14:50:55</DATE_MODIFIED>
      <IMAGE>abcd.pdf</IMAGE>
   </Record>
</Recordset>   

同样,使用 http://localhost/myWebSite 网址时出现 NOT 错误,只有在我使用 http://mymachine/myWebSite <时才会发生错误/ em>网址。并且,它仅在IE中出现 - Firefox&amp;无论使用哪种网址,Chrome都无法解决代码问题。

编辑#2

我找到了解决方法here

我的Site.Master文件进行了更改,更改了其中的 meta 标记。就是这样:

<head runat="server">
   <meta charset="utf-8" />

我改为:

<head runat="server">
    <meta charset="utf-8" http-equiv="X-UA-Compatible" content="IE=edge" />

似乎在IE中运行 http://mymachine/myWebSite 网址而不会发生错误,并且似乎不会导致其他问题。

这只是一种解决方法,不一定是解决方案。

编辑3

@Oleg - 这是使用链接中jquery-master zip文件中的免费4.7版本的代码。

 var createGrid = function () {
     $("#myGrid").jqGrid({
         url: "mydata.xml",
         xmlReader: {
  repeatitems: false,
  root: "Recordset",
  row: "Record",
  id: "[setEntry]"
         },
         datatype: "xml",
         colNames: [
  "Product",
  "Manufacturer",
  "Date Created",
  "Date Modified",
  "Image Link",
         ],
         colModel: [
  { name: "PROD_NAME", xmlmap: "Recordset>Record>PROD_NAME" },
  { name: "MFR", xmlmap: "Recordset>Record>MFR", width:175 },
  { name: "DATE_CREATED", xmlmap: "Recordset>Record>DATE_CREATED", width:125, index: "DATE_CREATED", sorttype:"date", formatter: "date", formatoptions: {srcformat:"F d, Y H:i:s", newformat:"Y-m-d H:i:s"}, datefmt:"Y-m-d H:i:s" },
  { name: "DATE_MODIFIED", xmlmap: "Recordset>Record>DATE_MODIFIED", width:125, index: "DATE_MODIFIED", sorttype: "date", formatter: "date", formatoptions: { srcformat: "F d, Y H:i:s", newformat: "Y-m-d H:i:s" }, datefmt: "Y-m-d H:i:s" },
  {
      name: "IMAGE", xmlmap: "Recordset>Record>IMAGE", width:100,
      formatter: function (cellValue, options, rowObject) {
         return '<a href="../Work_Documents/' + cellValue + '" target="_blank" >' + cellValue + '</a>';
    }
  }
         ],
         rowNum: 10,
         pager: true,
         gridview: true,
         rownumbers: false,
         height: "auto",
         loadonce: true,
         autoencode: true,
         caption: "MyGrid",
         ignoreCase: true, 
         hidegrid: false,
         altrows: true,
         recordtext: "View {0} - {1} of {2}",
         emptyrecords: "No Records to View",
         pgtext: "Page {0} of {1}",
         navOptions: {
              edit: false,
              add: false,
              del: false,
              searchtext: "Search"
              },
         searching: {
              multipleSearch: true,
              multipleGroup: true
              }
     }).navGrid();
 };

页面的HTML部分现在是:

<div id="UpdatePanel" style ="padding:20px 10px">
    <table id="myGrid" border="0" cellpadding="0" cellspacing="0" style="width:100%">
        <tr>
            <td></td>
        </tr>
    </table>        
</div>

所有链接&amp;脚本:

<link href="Scripts/jquery-ui-1.10.4.custom/css/cupertino/jquery-ui.css" rel="stylesheet" type="text/css" />
<link href="Scripts/jqGrid-master/css/ui.jqgrid.css" rel="stylesheet" type="text/css"/>
<script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.js" type="text/javascript"></script>
<script src="Scripts/jqGrid-master/js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="Scripts/jqGrid-master/js/jquery.jqGrid.src.js" type="text/javascript"></script>
<link href="CustomFormatter.css" rel="stylesheet" type="text/css"/>

以上配置将加载网格没有任何问题。但是,单击搜索按钮时,第622行第3行的 jquery-1.9.1.js 中会出现错误。语句为length = obj.length,,错误是 TypeError:obj未定义

2 个答案:

答案 0 :(得分:2)

您似乎在不同版本的IE上进行了测试。 IE10-IE11对ts.firstElementChild.innerHTML的使用应该没有问题,但旧版本的IE 不支持firstElementChild属性。您应该关注the answerthis one。您可以从here下载固定版本的jqGrid 4.7,或从我的前叉here下载新的免费jqGrid版本的测试版。我计划很快发布新版本的jqGrid。

答案 1 :(得分:0)

也许是IE中的安全区域。转到工具 - &gt;互联网选项;然后到安全选项卡。检查http://mymachine与localhost在同一区域。

您还可以尝试将http://mymachine添加到受信任的网站。

最后,我还有时间将 about:添加到“受信任的站点”区域