不能用jQuery调用flickr api

时间:2012-04-27 12:52:31

标签: jquery ajax json flickr

我在我的网站上运行此代码以获取一组照片,但我总是得到错误。控制台日志显示“parsererror”。我做错了什么?

middle.php

<?php die(file_get_contents($_REQUEST['url'])); ?>

的script.js

//Flickr
var url = encodeURIComponent('http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=1408bff5f72a4b84b924d13e8562b6a2&photoset_id=77649470@N03&photoset_id=72157629903184261&format=json');
$.ajax({
    url: "middle.php?url="+url,
    dataType: "json",
    success: function(){
        console.log("yes");
    },
    error: function(jqXHR, textstatus, errorThrown){
        console.log("nooo");
        console.log( textstatus );
    }
});

1 个答案:

答案 0 :(得分:3)

如果您因跨域安全问题而遇到问题,则需要创建“中间人”页面。我将使用PHP作为我的例子。我将创建一个middle.php来接受不同的域网址,获取文本/代码并返回它。我的JS会将此视为同一站点请求,所有这些都是花花公子。

<强> middle.php

<?php die(file_get_contents($_REQUEST['url'])); ?>

如果PHP不是您使用的,您可以在自己的环境中应用相同的策略。

然后你的ajax调用将会是这样的..

var url = encodeURIComponent('http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=1408bff5f72a4b84b924d13e8562b6a2&photoset_id=77649470@N03&photoset_id=72157629903184261&format=json');

$.ajax({
    url: "middle.php?url="+url,
    dataType: "json",
    success: function(){
        console.log("yes");
    },
    error: function(jqXHR, textstatus, errorThrown){
        console.log("nooo");
        console.log( textstatus );
    }
});

但是,我喜欢使用getJSON()来获取JSON数据,而不是ajax()

$.getJSON("middle.php?url="+url, function(obj){
    if (obj.photoset){
        console.log("Success");
    } else {
        console.log("Error");
    }
});