javascript - 在 Firefox 和 Chrome 中使用 jQuery 获取 JSON 结果时出现问题(IE8 工作)

标签 javascript jquery json parsing

我正在尝试使用 jQuery 解析 JSON,但遇到了问题。使用下面的代码,数据不断返回 null:

<!DOCTYPE html>
<html>
  <head>
    <title>JSON Test</title>
  </head>
  <body>
    <div id="msg"></div>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
        $.ajax({
          url: 'http://datawarehouse.hrsa.gov/ReleaseTest/HGDWDataWebService/HGDWDataService.aspx?service=HC&zip=20002&radius=10&filter=8357&format=JSON',
          type: 'GET',
          dataType: 'json',
          success: function(data) {
            $('#msg').html(data[0].title); // Always null in Firefox/Chrome. Works in IE8.
          },
          error: function(data) {
            alert(data);
          }
        });
    </script>
  </body>
</html>

JSON 结果如下所示:

{"title":"HEALTHPOINT TYEE CAMPUS","link":"http://www.healthpointchc.org","id":"tag:datawarehouse.hrsa.gov,2010-04-29:/8357","org":"HEALTHPOINT TYEE CAMPUS","address":{"street-address":"4424 S. 188TH St.","locality":"Seatac","region":"Washington","postal-code":"98188-5028"},"tel":"206-444-7746","category":"Service Delivery Site","location":"47.4344818181818 -122.277672727273","update":"2010-04-28T00:00:00-05:00"}

如果我用 Flickr API URL ( http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=? ) 替换我的 URL,我会得到一个我可以使用的有效 JSON 结果。

我已在 JSONLint 成功验证了我的 JSON , 所以我已经想不出我可能做错了什么。

有什么想法吗?

更新:我让客户端将内容类型切换为 application/json。不幸的是,我仍然遇到完全相同的问题。我还更新了我的 HTML 并包含了我一直在使用的实时 URL。

更新 2: 我刚刚在 IE8 中试了一下,效果很好。由于某种原因,它在 Firefox 3.6.3 或 Chrome 4.1.249.1064 (45376) 中均不起作用。我确实注意到返回的数据有错误(开发人员正在返回数据集合,即使对于始终返回单个记录的查询也是如此),但它仍然让我感到困惑,为什么它在其他浏览器中不起作用。

请务必注意,我正在使用本地文件系统上的 HTML 文件。我认为这可能是一个 XSS 问题,但这并不能解释 Flickr 的工作原理。

最佳答案

Flickr 的 API 支持 JSONP ,而您要连接的那个则没有。

jQuery 看到 =? 并理解存在对 JSONP 回调的请求并创建一个。您可以在示例页面使用的 jQuery 库的第 5003 行看到它。

所以,你需要改变两件事

  1. 为您的请求添加回调参数。无论您(或您的开发人员)想怎么调用它。假设您选择 cb - 所以将其添加到 AJAX 请求中:&cb=?(这样我们让 jQuery 为我们处理回调的创建)
  2. 让您的服务开发人员接受这个新参数,并在返回之前用它“填充”结果。

关于javascript - 在 Firefox 和 Chrome 中使用 jQuery 获取 JSON 结果时出现问题(IE8 工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2737852/

相关文章:

javascript - 如何在文本选择中获取所有 <img> 标签?

javascript - 在悬停时使用 html 和 javascript 让子 dom 元素超出父 div 的范围

ios - 使用 iOS 和 Swift 访问深度嵌套的 json 数据的最简单方法是什么?

javascript - 是否可以将 javascript 值设置为 <g :set var ="x">

javascript - 如何使用网络摄像头拍照并将其转换为图像文件

javascript - 如何在浏览器或选项卡关闭时获取 Web 通知

javascript - 在动态生成的图表中为最大值添加颜色?

jquery 日期范围 datepicker 格式

基于Json文件的Java非重复数组

javascript - AJAX 从 JSON 树获取