【问题标题】:Strange problem with JQuery ajax in IE9IE9中JQuery ajax的奇怪问题
【发布时间】:2011-06-07 14:01:22
【问题描述】:

我一直在使用一些 java 脚本,确切地说是 JQuery,我在 IE9 中的 Ajax 调用遇到了一些问题,在 Firefox4 中一切正常,但是在运行脚本时在 IE9 控制台中我没有收到错误出现以下错误

SCRIPT5009: 'JSON' is undefined 
FeedbackComment.js, line 49 character 17

代码非常简单标准

$.ajax({
                type: "POST",
                url: defaults.WebServiceURL,
                data: "{ 'collectedFeedback':" + JSON.stringify(collectedFeedback) + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {

                }
            });

还有代表收集反馈的幕后网络服务和类。但是问题似乎与他们无关。

我不知道发生了什么,请任何人帮助我。 提前致谢

【问题讨论】:

  • 您正在尝试引用一个名为 JSON 的变量 - JSON.stringify(collectedFeedback) - 尚未定义 - 可能是因为定义它的代码在 IE9 中不起作用。你能发布那个代码吗?
  • 看起来 JSON 库没有被 IE 加载?假设 JSON.stringify 在第 49 行
  • 你们完全正确!我从github.com/douglascrockford/JSON-js/blob/master/json2.js 添加了 json2,然后事情又开始工作了。非常感谢您的帮助!

标签: javascript asp.net web-services jquery


【解决方案1】:

只是想补充一点,如果您在 IE 中并且它默认为 quirks 模式或 IE 7 或更早的兼容模式 JSON 将不可用。

【讨论】:

  • 检查你的 DOCTYPE,IE 使用它来切换模式。
  • 并非总是如此,可以设置 doctype,但如果 IE 遇到它不喜欢的任何内容,例如 doctype 标记之前的 cmets,仍会切换到 quirks。许多内容系统会在 doctype 强制浏览器进入 quirks 模式之前提交 cmets。上次我看到这个时,我遇到了与 OP 相同的错误。
【解决方案2】:

每当我遇到 IE 7,8 或 9 的问题时,我首先检查的是字符集并确保它被强制为 utf-8。对这个很挑剔。

另一件需要注意的是内容类型的标题。确保它是正确的并且与您发回的响应相匹配。它也往往对此很挑剔。

因此,例如,如果您发出 ajax 请求并期待 json 响应,则应将 content-type 设置为 'application/json;字符集=utf-8;'。如果您发出 ajax 请求并期望 html 作为响应,则您的内容类型应设置为 'text/html; charset=utf-8;'.

希望这对我有帮助。

【讨论】:

    【解决方案3】:

    我遇到了这个问题。代码在某些页面中运行,而在其他页面中则没有。感谢上面“Rocket Hazmat”的评论,我能够确定该页面只需要:

    <!DOCTYPE html>
    

    在顶部。没有它,JSON 对象就不存在了! IE 的行为就像古代历史中的东西。难怪微软为了在新浏览器上重新开始而放弃这个代码库。

    【讨论】:

      猜你喜欢
      • 2014-07-16
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2012-03-21
      相关资源
      最近更新 更多