Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Firefox和Chrome中使用jQuery获取JSON结果时出现问题(IE8可用)_Javascript_Jquery_Json_Parsing - Fatal编程技术网

Javascript 在Firefox和Chrome中使用jQuery获取JSON结果时出现问题(IE8可用)

Javascript 在Firefox和Chrome中使用jQuery获取JSON结果时出现问题(IE8可用),javascript,jquery,json,parsing,Javascript,Jquery,Json,Parsing,我试图使用jQuery解析JSON,但遇到了一些问题。使用下面的代码,数据总是返回空值: <!DOCTYPE html> <html> <head> <title>JSON Test</title> </head> <body> <div id="msg"></div> <script src="http://code.jquery.com/jqu

我试图使用jQuery解析JSON,但遇到了一些问题。使用下面的代码,数据总是返回空值:

<!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>
如果我用Flickr API URL()替换我的URL,我会得到一个可以使用的有效JSON结果

我已经在上成功地验证了我的JSON,所以对于我可能做错了什么,我已经没有什么想法了

有什么想法吗

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

更新2:我刚刚在IE8中尝试了一下,效果很好。出于某种原因,它在Firefox 3.6.3或Chrome 4.1.249.1064(45376)中都不起作用。我确实注意到返回的数据有一个错误(开发人员返回的是一组数据,即使查询总是返回一条记录),但我仍然不明白为什么它在其他浏览器中不起作用


请注意,我是从本地文件系统上的HTML文件工作的,这一点可能很重要。我认为这可能是XSS的问题,但这并不能解释为什么Flickr可以工作。

您考虑过使用更灵活的$.ajax吗?我将在这里进行分解,看看默认的$.getJSON是否没有提供您所需要的内容

$.ajax({
   url: 'results.json',
   type: 'GET',
   dataType: 'json',
   success: function(data, status)
   {
       alert(data);
   }
});

将是等效的ajax“父级”实现。试着到处乱搞,看看是否有一个特定的属性需要设置

您是否考虑过使用更灵活的$.ajax?我将在这里进行分解,看看默认的$.getJSON是否没有提供您所需要的内容

$.ajax({
   url: 'results.json',
   type: 'GET',
   dataType: 'json',
   success: function(data, status)
   {
       alert(data);
   }
});
将是等效的ajax“父级”实现。试着到处乱搞,看看是否有一个特定的属性需要设置

如果一个url(flickr url)有效,而另一个url无效(你自己的),我会说问题在于你的url

看起来您使用的是相对路径,这是您的意图吗?您是否使用firebug的网络面板查看请求的外观?

如果一个url(flickr url)有效,而另一个url无效(您自己的),我会说问题在于您的url

看起来您使用的是相对路径,这是您的意图吗?您是否使用firebug的网络面板查看请求的外观?

是作为“应用程序/json”提供的内容?

是作为“应用程序/json”提供的内容?

Flickr的API支持,而您连接的内容不支持

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

所以,你需要改变两件事

  • 向请求中添加回调参数。不管你(或你的开发者)想叫它什么。假设您选择了
    cb
    ,那么将其添加到AJAX请求中:
    &cb=?
    (这样我们就可以让jQuery为我们处理回调的创建)
  • 让让让服务开发人员接受这个新参数,并在返回它之前用它“填充”结果
  • Flickr的API支持,而您连接的API不支持

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

    所以,你需要改变两件事

  • 向请求中添加回调参数。不管你(或你的开发者)想叫它什么。假设您选择了
    cb
    ,那么将其添加到AJAX请求中:
    &cb=?
    (这样我们就可以让jQuery为我们处理回调的创建)
  • 让让让服务开发人员接受这个新参数,并在返回它之前用它“填充”结果

  • 这是一个跨域请求错误的案例。Flickr工作,因为它是JSONP,而另一个url不工作,因为它没有启用JSONP。 1.检查url是否支持JsonP 2.如果没有,请在本地域(与网页所在的域相同)中创建代理web服务
    3.调用代理Web服务,代理Web服务从服务器端调用外部url。

    这是跨域请求错误的情况。Flickr工作,因为它是JSONP,而另一个url不工作,因为它没有启用JSONP。 1.检查url是否支持JsonP 2.如果没有,请在本地域(与网页所在的域相同)中创建代理web服务
    3.调用代理Web服务,代理Web服务从服务器端调用外部url。

    响应代码是什么?您可以尝试切换到
    $.ajax()
    调用并检查调用中的错误吗?响应代码是什么?您能否尝试切换到
    $.ajax()
    调用并检查调用中的错误?这是一个很好的问题。我的猜测是否定的(我的一个客户编写了JSON服务)。我得调查一下。我几乎可以肯定这就是答案。刚刚选中,其内容类型为:application/atom+xml;charset=utf-8。问得好。我的猜测是否定的(我的一个客户编写了JSON服务)。我得调查一下。我几乎可以肯定这就是答案。刚刚选中,其内容类型为:application/atom+xml;charset=utf-8。如果我在Firebug的网络面板上查看Response选项卡,我只会在使用Flickr URL时看到JSON格式的数据。否则,响应流似乎是空的。如果我通过telnet连接到端口80并手动执行GET,我会看到预期的结果。如果我在Firebug中查看网络面板上的响应选项卡,我只会在使用Flickr URL时看到JSON格式的数据。否则,响应流似乎是空的。如果我通过telnet连接到端口80并手动执行GET,我确实会看到预期的结果。那么为错误案例添加一个处理程序,看看是否发生了这种情况呢?这实际上是我以前从未听说过的事情。我恳求