神秘的ajax json请求问题jQuery

Mysterious ajax json request problems jQuery

本文关键字:请求 问题 jQuery json ajax      更新时间:2023-09-26

我想阅读一个用谷歌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');

谢谢!

Ajax请求受到浏览器的同源策略的限制。您不能通过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. 您请求的主机也可能不允许第三方或跨浏览器的ajax调用
  2. 如果您期望JSON作为请求的结果,请使用$.getJSON()

谢谢Rahul