【发布时间】:2016-02-12 00:34:37
【问题描述】:
我正在尝试从 Premier League Fantasy Football 网站中提取一些数据,但未能找到类似于 catch 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 正在做什么来获取我没有的数据?
【问题讨论】:
-
你不能让网站支持 jsonp,他们需要最终支持它。
-
那么你如何解释 Firefox 如何向他显示数据?
-
了解 epascarello,谢谢。我只是好奇 FF 中发生了什么。
-
@mariocatch 你不能通过随机的 JSONP 回调让服务器返回 JSONP。我可以将任何 JavaScrip 文件粘贴在 JSONP 调用所做的页面上。浏览器所做的就是在页面上粘贴
<script src="http://fantasy.premierleague.com/web/api/elements/1111"></script>。所以当然代码会被卡住,但你不会像 JSONP 期望的那样将 functionName() 包裹起来。 -
我明白 :) 我在问他的 FF 是如何返回他所追求的响应的。
标签: javascript jquery ajax jsonp