【问题标题】:jQuery $.getJSON not sending request in IE (works in FF and Chrome)jQuery $.getJSON 不在 IE 中发送请求(适用于 FF 和 Chrome)
【发布时间】:2012-03-30 16:07:41
【问题描述】:

我处于 IE9 的调试模式。我在第一行(下面)放了一个断点,它就成功了。但是,我在回调中第一行的断点从未被命中。

查看网络标签后,我没有看到对 URL 的请求(设置为 "http://localhost/PopNote/")。

$.getJSON(
            URL + "messages/getUnreadMessages.json?" + Math.random(), // add random to prevent IE cache
            {
                productKey      : this.productKey,
                listIds         : this.listIds,
                personEmail     : this.personEmail
            },
            function(data) {    
                if(data.messages.length == 0) return;

为什么没有发送请求(并且仅在 IE 中)?

谢谢!

【问题讨论】:

  • 您是否尝试过附加故障处理程序以查看是否收到任何类型的响应?
  • 您是否正确关闭了括号和括号?所有这些变量总是启动吗?我曾经遇到过类似的情况,我认为这是一个兼容性问题,结果是一个语法代码错误,firefox 无论如何都处理了请求而 IE 没有。
  • @SteveGreatrex:如何附加故障处理程序?我在 jQuery 文档中没有看到类似的内容。
  • @AFinkelstein:是的,是的。我在 IE 中得到 0 个错误。
  • 要附加故障处理程序,请改用 $.ajax 方法。如果您查看文档,$.getJson 只是调用 $.ajax。

标签: jquery internet-explorer internet-explorer-9 getjson


【解决方案1】:

神圣的鳄梨酱!这是一些错误!这是我修复它的方法:

  1. 在我的脚本开头添加了jQuery.support.cors = true;
  2. crossDomain: truedataType: 'jsonp' 添加到我的$.ajax 选项中
  3. 将我的 JSON 代码转换为 JSONP 格式,例如:

    $_GET['callback'] . '(' . json_encode($data) . ');'

还有瞧!我今天调试过的最难的错误。

【讨论】:

  • 谢谢!这真的很难调试,甚至很难找到这个问题:P 无论如何,我只是添加了 crossDomain: true 并且它有效
  • 没有问题 :) 有人必须这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 2014-01-18
  • 1970-01-01
  • 2011-05-15
  • 2016-02-27
  • 1970-01-01
相关资源
最近更新 更多