【问题标题】:jQuery .getJSON() callback function isn't executingjQuery .getJSON() 回调函数未执行
【发布时间】:2011-10-11 20:08:11
【问题描述】:

我的代码中有这个:

 .getJSON("http://myUrl.com", function(data){ alert("callback being called");});

在我的服务器端代码中使用断点,我可以看到从 url 返回的 JSON 流。在 Chrome 中单步执行时,我从未看到调用的警报(或其中的任何其他代码)。当我使用 chrome 开发人员工具查看网络流量时,我看到正在对 myURl 进行调用(我可以看到响应为我期待的 JSON 字符串)。只是看起来回调函数永远不会执行。

有人知道为什么它不会执行吗?

【问题讨论】:

  • 我猜你的意思是$.getJSON而不是.getJSON
  • 您的代码是否在与http://myUrl.com不同的域上运行?
  • 您是否尝试从与页面不同的域加载 JSON?如果是这样,您应该阅读同源限制。
  • 开发者工具控制台没有错误?

标签: jquery json


【解决方案1】:

我遇到了几个问题,其中大部分问题都通过在这里深入挖掘得到解决(我的错,但也许这仍然可以帮助其他人)。

  1. 我没有返回正确的内容类型 (application/json)
  2. 我的 json 解析不正确(我在数组声明的末尾有一个分号和额外的逗号 http://paulisageek.com/json_validator/ 帮助验证了我的 json。
  3. 使用带有错误绑定的 .ajax() 方法也帮助我解决了我的问题。

令人沮丧,因为没有抛出异常/错误,它只是拒绝调用回调。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      先尝试以下方法,然后替换为您的网址

      <script type="text/javascript">
          $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
          function (data) { alert("callback being called");}
          );
      </script>
      

      【讨论】:

        猜你喜欢
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 2015-11-12
        相关资源
        最近更新 更多