神秘的ajax json请求问题jQuery

时间:2012-09-03 08:47:41

标签: javascript jquery ajax json rss

我想用google api读取转换为json格式的rss feed;我发了一些警报但是当我运行我的页面时我看不到它们!为什么?

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

谢谢!

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

  1. 您请求的主机也可能不允许第三方或跨浏览器的ajax调用。
  2. 如果您希望JSON符合请求的结果,请使用$.getJSON()
  3. 由于 拉胡