【问题标题】:How to properly debug and determine javascript/ajax root cause of a js error in IE如何正确调试和确定 IE 中 js 错误的 javascript/ajax 根本原因
【发布时间】:2014-01-02 17:58:02
【问题描述】:

网站(网址)在这里:http://www.icrm.org/career-opportunities/

这显示了一个表格,其中列标题是可点击的(它们排序),列 Career Title 条目都是可点击的 - 它们会导致显示更多信息的详细信息屏幕。

这在除 IE 之外的所有浏览器中都能正常工作(除了格式问题)

奇怪的是,在 IE 中只有标题列表中的第一个链接不起作用(电子记录管理器结构化)。然而,当您将鼠标悬停在它上面时,您可以看到该调用与所有其他标题相同。所有其他链接工作正常。

当列表被重新排序时,问题“跟随”有问题的链接,而不是与(新的)第一个链接保持关联。

这排除了 positionally 作为根本原因,但是我也已将相关项目的标题更改了足够多的时间以消除文本中包含的任何内容。

我的问题是我从这里去哪里?我用于开发的每个平台都没有出现问题。

【问题讨论】:

  • 好吧,我会开始检查这些23 markup errors,然后检查控制台,你有一些警告。
  • 看控制台:"SCRIPT5007: Unable to get value of the property 'getAttribute': object is null or undefined api.js, line 421 character 4"

标签: javascript ajax internet-explorer debugging ie-developer-tools


【解决方案1】:

因此,如果您在 IE 开发工具中打开它(按 F12),您可以监控网络流量并查看幕后发生的情况。当您单击“Electronic Records Manager Structured”时,将成功执行以下操作:javascript:fetchRemoteData(null,"&column=Title&rowID=1114")。这会导致成功的网络请求和响应,其中包含:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<JobPostings columns="19" method="DisplayAJobPost" rows="1">
   <JobPosting row="0">
      <ID>1114</ID>
      <ApprovedPublic>Y</ApprovedPublic>
      <Status>Approved</Status>
      <Title>Electronic Records Manager Structured</Title>
      <Location>Rosemead, California United States Of America</Location>
      <Company>Southern California Edison</Company>
      <CRMQualifications>CRM Preferred</CRMQualifications>
      <Requirements/>
      <Description>Highly-motivated; like challenge; &#13;
collaborative; committed to delivering &#13;
high quality workÉ Did we describe &#13;
you? Read onÉ&#13;
 &#13;
Southern California Edison is one of &#13;
the nation?s largest investor-owned &#13;
electric utilities. We are an industry &#13;
leader that is designing new and &#13;
innovative ways to meet our &#13;
...

这也是我看起来所有的行为都正常和正确。但是,当您的应用程序尝试在页面上显示它时:

SCRIPT5007:无法获取未定义或空引用的属性“documentElement” 文件:api.js,行:421,列:4。

XML5617:非法的 XML 字符。行:14,第 18 列

我怀疑这是因为您为该特定记录返回的 XML 无效。从那里开始,希望对您有所帮助!

【讨论】:

  • 谢谢,但它没有回答为什么 IE 而不是任何其他浏览器。 XML 在服务器端进行解析和组装并进行验证,那么中间流(和/或为什么)会发生什么变化导致服务器和客户端之间发生这种情况?我会将所有内容转换为 ascii 服务器端并重新保存文档(以为我从那里开始......),看看是否有帮助。感谢调试——谢谢!
  • 我不是浏览器中 XML 解析方面的专家,但是如果不同的浏览器遵循不同的 XML 标准(就像他们多年来对其他 W3C 标准所做的那样),我一点也不感到惊讶。这可以解释IE中发生的神圣行为。问题肯定发生在您的 XML 解析中,因此这将是开始调试的最佳位置。也许这里的另一篇文章可能会为您提供很好的信息,特别是关于您的 XML 失败的原因等。
  • 新信息——随着列表的变化,它一致删除了 first 条目,但是如果您重新使用这些条目,它们不再按该顺序排列并且第一个条目仍然存在问题。因此,基于此,它不是特定于数据的问题。 (我已经尝试一次又一次地擦洗数据,而不是他的后端只是纯 ascii)。它似乎*可能是位置问题或阻塞缓存的问题。只需发送(预)格式化的块吗?)
  • 修复它的工作量已经超出了值得修复的程度——它已被安排更换。 (当我可以简单地生成服务器端所需的所有内容并将(预)格式化的块发送到客户端进行显示时,为什么要 JS 操作数据?
  • 我在一定程度上同意该策略,但是当您在服务器端格式化时很容易养成坏习惯,因为它违反了将形式与功能分离的做法并导致无法维护的代码和调试困难。不过这很有趣——我很惊讶这不是数据问题。我将不得不仔细查看您的服务器端实现以提供更多见解。也就是说,XML 解析问题可能是更大问题的征兆,而不是问题本身——这可能更难以确定。
【解决方案2】:

我不确定这一点,但您对 Electronic Records Manager Structured 的响应中似乎返回了一些不兼容的字符。您能否检查您是否没有任何不属于this given charset 的字符,如果您确实有任何无效字符,那么您从techanoReq.responseXML.documentElement 返回的元素将为空。

【讨论】:

  • 我们使用 com.jamesmurty.utils.XMLBuilder 服务器端来组装 XML——多年来,我们一直使用完全相同的库来处理快递空间中黑莓消息传递的数百万笔交易——怀疑我们即使我们尝试过,也可以通过非法字符。不是说你错了——只是想弄清楚我自己怎么会错。
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 2012-01-10
相关资源
最近更新 更多