2011-06-07 80 views
2

我一直在使用一些java脚本,JQuery是确切的,我有一些问题与我在IE9中的Ajax调用,一切正常工作在Firefox4和我没有错误,但在IE9控制台时我运行脚本我收到以下错误IE9中jQuery ajax的奇怪问题

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) { 

       } 
      }); 

还有web服务。但是这个问题似乎与他们无关。

我不确定发生了什么事,任何人都可以帮助我。 在此先感谢

+1

您正在尝试引用一个名为JSON的变量 - 'JSON.stringify(collectedFeedback)' - 尚未定义 - 可能是因为定义它的代码在IE9中不起作用。你可以发布该代码吗? – 2011-06-07 14:06:44

+1

看起来JSON库没有被IE加载?假设JSON.stringify在线49 – WraithNath 2011-06-07 14:07:47

+1

你们绝对正确!我从https://github.com/douglascrockford/JSON-js/blob/master/json2.js添加了json2,并且事情又开始发挥作用。 非常感谢您的帮助! – Dmitris 2011-06-07 14:19:38

回答

4

只是想补充说,如果你在IE中,它默认进入怪癖模式或IE 7或更早的兼容模式JSON将不可用。

+1

检查您的DOCTYPE,IE使用它来切换其模式。 – 2011-06-21 19:40:07

+1

并非总是如此,doctype可以设置,但如果IE遇到任何不喜欢的东西,就像doctype标签之前的注释一样,仍然会切换到怪癖。许多内容系统会在doctype强制浏览器进入怪癖模式之前提交注释。上次我看到这个时,我得到了和OP一样的错误。 – ethermal 2011-06-22 17:08:38

+4

上帝,我讨厌IE>。< – 2011-06-22 18:01:53

0

任何时候我遇到过IE 7,8或9的问题,我检查的第一件事就是字符集,并确保它被迫使用utf-8。对此非常挑剔。

另一件需要注意的是内容类型标题。确保它是正确的,并与您回复的回复相匹配。它也倾向于对此挑剔。例如,如果你正在发出一个ajax请求并期望得到一个json响应,你应该将你的内容类型设置为'application/json;字符集= UTF-8;”。如果你正在做一个ajax请求并期待html作为你的响应,你的内容类型应该设置为'text/html;字符集= UTF-8;”。

希望这可以帮助某人,因为它有我。

0

我有这个问题。代码在某些页面上工作,而不是其他页面。由于从“火箭危险品”上面的评论,我能确定只需要在网页:

<!DOCTYPE html> 

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