通过跨站点AJAX解释JSONP

时间:2016-01-31 14:32:24

标签: javascript jquery ajax jsonp

我试图从英超联赛梦幻足球网站中提取一些数据,并且不知道什么感觉像是一个捕获22。

我的AJAX JSONP脚本如下所示:

function getPlayer(playerNumber) {
$.ajax({
    url: 'http://fantasy.premierleague.com/web/api/elements/' + playerNumber + '/',
    dataType: 'jsonp',
    success : function(responseText) {
        alert(responseText);
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        if (XMLHttpRequest.status != 200)
            alert('getPlayer failed!');
    },
    complete : function(jqXHR) {
        alert('complete');
    }
});

}

这会生成错误SyntaxError: missing ; before statement

我相信由于此页面上接受的答案: AJAX call and clean JSON but Syntax Error: missing ; before statement

将dataType更改为json意味着我违反了与此处描述的相同的原始政策。

令我烦恼的是,当我使用JSONP版本时,我获得状态200,我可以看到完整的对象'我的Firefox调试器中的结构。

那么Firefox正在做些什么来获取我不知道的数据?

1 个答案:

答案 0 :(得分:0)

好吧,我似乎是从错误的角度来看待这个问题。很明显,Firefox并没有使用JS来获取数据,所以最终我也没有。

PHP cURL做了这个伎俩:

$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, 'http://fantasy.premierleague.com/web/api/elements/' . $playerId);
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curlSession);
$player = json_decode($result, true);
curl_close($curlSession);