0

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

中间.php

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

脚本.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 );
    }
});
4

1 回答 1

3

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

中间.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");
    }
});
于 2012-04-27T12:58:36.503 回答