0

我想用 google api 阅读转换为 json 格式的 rss 提要;我已经放了一些警报,但是当我运行我的页面时我看不到它们!为什么 ?

这是我的 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');

谢谢 !

4

2 回答 2

3

Ajax 请求受浏览器的同源策略限制。您不能通过与运行脚本的页面不在同一个域中的 ajax 直接与服务器对话。因此,您需要使用 jquery ajax 中的 jsonp 功能:

$(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' 是这里的关键字。

您可以在此处搜索“jsonp”阅读有关它的更多信息:http: //api.jquery.com/jQuery.ajax/

或在这里: http ://bob.ippoli.to/archives/2005/12/05/remote-json-jsonp/

于 2012-09-03T09:01:38.933 回答
0
  1. 您请求的主机也可能不允许第三方或跨浏览器 ajax 调用。
  2. 如果您期望 JSON 作为请求的结果,请使用$.getJSON().

谢谢拉胡尔

于 2012-09-03T08:51:55.277 回答