通过跨站点解释 JSONP AJAX
Interpreting JSONP via cross-site AJAX
我正在尝试从 Premier League Fantasy Football 网站中提取一些数据,但没有达到 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
将数据类型更改为 json 意味着我违反了此处所述的同源策略。
让我恼火的是,当我使用 JSONP 版本时,我得到状态 200,我可以在我的 Firefox 调试器中看到完整的 'object' 结构。
那么 Firefox 正在做什么来获取我不是的数据?
好吧,看来我是从错误的角度来看待这个问题的。显然 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);
我正在尝试从 Premier League Fantasy Football 网站中提取一些数据,但没有达到 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
将数据类型更改为 json 意味着我违反了此处所述的同源策略。
让我恼火的是,当我使用 JSONP 版本时,我得到状态 200,我可以在我的 Firefox 调试器中看到完整的 'object' 结构。
那么 Firefox 正在做什么来获取我不是的数据?
好吧,看来我是从错误的角度来看待这个问题的。显然 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);