无法获得自定义JSONP管道

时间:2013-07-08 16:52:16

标签: php proxy jsonp

我正在构建一个可以进行3种不同API调用的音频播放器,我需要它们全部采用JSONP格式,因此我制作了一个PHP代理文件来确定JSON数据的输出,如下所示:

$datatype = $_GET["type"];
$artist = urlencode($_GET["artist"]);
$album = urlencode($_GET["album"]);
$content = "";

if($datatype == 'albumart'){
    $content = file_get_contents('http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=037358e302c80571663e6a7a66b1dc05&artist=' . $artist . '&album=' . $album . '&format=json');
} elseif($datatype == 'artistart'){
    $content = file_get_contents('http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key=037358e302c80571663e6a7a66b1dc05&artist=' . $artist . '&autocorrect=1&format=json');
} else {
    $content = file_get_contents('http://cjzn.streamon.fm/metadata/recentevents/CJZN-48k.json');
}

header('Content-type: application/json; charset=utf-8');
echo $_GET['callback'] . '(' . json_encode($content) . ')';

在测试输出后,它似乎工作正常,它获取相应的API数据,将其包装在JSONP ()中并接受JSONP回调。

当我尝试在我的Javascript文件中使用它时,它似乎不起作用,但我无法弄清楚为什么!以下是用于调用JSON数据的函数之一的示例:

function getAlbumArt(artist,album){
    var dataArtist = artist,
        dataAlbum = album,
        albumArtURL;
    $.ajax({
        url: 'jsonproxy.php',
        dataType: 'jsonp',
        data: {
                type: 'albumart',
                artist: dataArtist,
                album: dataAlbum
        },
        success: function(data) {
                if(data.album.image[4]["#text"]){
                    var albumArtURL = data.album.image[4]["#text"];
                    $('section.player div.album-artwork').css({'background-image':'url("' + albumArtURL + '")'});
                } else {
                        getArtistArt(dataArtist);
                }
        },
        error: function() {
                getArtistArt(dataArtist);
                alert('Sorry, unable to retrieve album artwork!');
        }
    });
}

任何人都可以帮忙解释为什么这对我不起作用?

修改

我在alert(data);上做了success,并且返回了Feed中的所有数据,之后如果我执行了更具体的内容,例如alert(data.album.image[4]["#text"]);,则返回undefined。这里很困惑。有人有什么想法吗?

0 个答案:

没有答案