【问题标题】:AJAX not working in IE7AJAX 在 IE7 中不起作用
【发布时间】:2012-02-09 11:50:03
【问题描述】:

我们的页面中有很多 AJAX。大多数情况下它在我们的内部系统中,所以我们没有用很多浏览器测试它。但目前我们正在为我们的客户开发一个使用 AJAX 的主要功能,并且我们对其进行更彻底的测试。其中一项测试是在 IE9 中运行 IE7 模式,效果很好。但是当我们使用一台运行真正 IE7 浏览器的机器时,我们发现 AJAX 只在我们的任何页面上工作一次。似乎在使用 ajax 重新渲染页面的一部分后,重新渲染的 HTML 部分中的所有 javascript 事件都停止工作。甚至连 javascript alert() 框都不可能出现。

由于我们只有一台装有 IE7 的机器,我们想知道是否有人可以验证这是一个真正的问题,而不仅仅是我们这台机器的问题?

如果这是一个真正的问题,您采取了哪些措施来解决它?我们有 10% 的用户仍在使用 IE7,因此切断该浏览器并不是一个可行的解决方案。

更新/已解决: 我们决定购买一台新服务器并使用 Windows XP 进行设置。尽管我们不支持它,但我们在 IE6 中对其进行了测试,并且可以正常工作。然后我们安装了 IE7,它也可以工作。猜猜我们的旧测试服务器都搞砸了。所以毕竟在 IE7 中都能正常工作。

谢谢大家的建议。

【问题讨论】:

  • PS:我们所有的 AJAX 都使用 JSF2 和 f:ajax。

标签: ajax jsf-2


【解决方案1】:

我个人打算忘记旧的浏览器,但我通常使用 jQuery 库 来处理我的 AJAX 请求,因为我通常使用 jQuery 来处理特定的动画等。

jQuery 支持这些浏览器:

火狐 3.6、5.0.x、6.0.x

Internet Explorer 6+

Safari 5.0.x Opera Current - 1

版本 Chrome 当前 - 1 个版本

source

因为 jQuery AJAX 与其他任何东西一样是 jQuery 库的重要组成部分,所以我假设这些浏览器也支持 jQuery AJAX。

jQuery AJAX API

【讨论】:

    【解决方案2】:

    AJAX 调用缓存在 IE 中。在 ajax 调用选项中使用“cache: false”。

    【讨论】:

    • 如果不使用“cache: false”会怎样?
    • 我的意思是,我们单击提交按钮并触发 AJAX。然后我们再次单击它,并且不会触发任何 onclick 事件。而是发送传统的非 AJAX POST 请求。
    • 如果不加"cache: false",IE会缓存你的ajax调用,你不会从服务器获取新数据
    • 我会看看我是否能以某种方式对此进行测试,但我必须说,我对此表示怀疑。这是因为第一个 AJAX 请求总是对我们有效。在该请求和新 HTML 呈现后,新 HTML 中的任何 JS 事件都无法触发。甚至是这样的:onclick="alert('test');"在非 AJAX 元素上什么也不做。我很难将该行为与缓存问题联系起来。但无论如何我都会调查一下,因为我自己没有想法,现在对任何建议都持开放态度。
    • 如果新的 HTML 被渲染,你是对的,这不是缓存问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多