2012-09-03 207 views
0

我想读转换为JSON格式与谷歌API RSS馈送;我已经提出了一些警报,但当我运行我的页面时,我看不到它们!为什么?神秘AJAX JSON请求问题的jQuery

这里是我的jQuery代码:

function getFeed(url){ 
     $('#screen #content').html(""); 
     $.ajax({ 
      url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q='+url, 
      crossDomain: true, 
      dataType: 'json', 
      success: function(data) { 
       alert(3); 
       $.each(data.entries, function(i,results){ 
        alert(1); 

       }); 
      } 
     }); 
    } 
    getFeed('http://www.nytimes.com/services/xml/rss/nyt/Science.xml'); 

谢谢!

+0

你可以阅读更多关于它的搜索 'JSONP' 在这里: http://api.jquery.com/jQuery.ajax/

或在这里。 。也许你的要求是无效的或类似的(错误的URL等) – tuxtimo

+0

您可能希望URL编码'url' – Musa

+0

什么是在开发者控制台输出的东西吗?您是否尝试过附加错误处理程序并读取错误消息? –

回答

3

Ajax请求是由浏览器的同源策略的限制。你无法通过AJAX是不是在同一个域作为你的脚本在运行页面直接与服务器 所以,你需要使用JSONP功能从jQuery的AJAX:

$(document).ready(function() { 

     function getFeed(url) { 
      $.ajax({ 
       url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=' + url, 
       crossDomain: true, 
       dataType: 'jsonp', 
       success: function (data) { 
        console.log(data); 

       }, 
       error: function (data) { 
        console.log(data); 
       } 
      }); 
     } 
     getFeed('http://www.nytimes.com/services/xml/rss/nyt/Science.xml'); 

    }); 

的dataType :'jsonp'是这里的关键字。如果你想获得的json与jQuery使用$ .getJSON ..并注册一个完整的处理程序 http://bob.ippoli.to/archives/2005/12/05/remote-json-jsonp/

+0

非常感谢! – Random78952

+0

@Rochester:请注意,服务器也必须支持JSONP。这不是一个神奇的子弹,可以让你跨域请求到所有域。 –

0
  1. 您所请求的主机也可能不允许第三方或跨浏览器ajax调用。
  2. 如果从请求期待JSON作为结果,使用$.getJSON()

感谢 拉胡尔

+0

我已经尝试使用的getJSON,它的工作原理,但为什么我的Ajax请求这么想的工作? – Random78952

+1

尝试在URL中提供您的回调函数。它应该工作,因为getJSON()在内部调用$ .ajax本身。 – Rahul