$(document).ready(function(){
var requestURL = 'http://www.football-data.org/soccerseasons?callback=?';
$.ajax({
type: 'GET',
dataType: 'json',
url: requestURL,
success: function(data){
console.log(data)
}
});
});
这是我的代码, 老实说我没有任何线索,我一直试图在网上找到答案,并查看其他人的代码,我只是不知道。可能答案真的很愚蠢,但无论如何,为了对数据做更多的事情,我真的需要通过这种情况。 所以,我有这个代码,我想在Html中将值解释为不同的东西,但为此,我需要值。我知道我正在做一个积极的请求,因为我可以在回复中看到。但看起来没有触发成功功能。 我只是想知道为什么我无法在控制台中看到从这个json文件中提取的所有数据。 谢谢,对不起,如果你们认为这个问题太愚蠢了:(
答案 0 :(得分:1)
评论数据类型如下所示并尝试此操作。
(文档)$。就绪(函数(){
var requestURL = 'http://www.football-data.org/soccerseasons?callback=?';
$.ajax({
type: 'GET',
// dataType: 'json', // comment datatype
url: requestURL,
success: function(data){
console.log(data)
}
});
});
答案 1 :(得分:1)
您希望首先确保服务器返回正确的jsonp响应,因为您正在调用跨域。然后你必须使用dataType:'jsonp'
。而且你不需要成功或完全回调;你需要一个回调函数,一旦返回数据就会调用它。
function myCallback( data ) {
$('pre.out').text( JSON.stringify(data) );
};
$(document).ready(function(){
var requestURL = 'http://www.football-data.org/soccerseasons?callback=?';
$.ajax({
type: 'GET',
dataType: 'jsonp',
jsonpCallback: 'myCallback',
url: requestURL
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre class="out"></pre>
&#13;
如果你检查开发工具的网络选项卡,你会看到返回的数据,但它没有像jsonp一样正确地包装在回调函数中。
服务器响应:
[{"id":351,"caption":"1. Bundesliga 2014/15",...."lastUpdated":"2014-11-03T03:58:10Z"}]
<强>更新强>
这是服务器发送正确的jsonp的简单示例:
$.ajax( 'http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&callback=?', {
dataType:'jsonp',
jsonpCallback:'myCallback'
});
function myCallback( data ) {
$('pre.out').text( JSON.stringify(data) );
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre class="out"></pre>
&#13;
服务器响应:
myCallback({"coord":{"lon":139,"lat":35},"sys"....."cod":200});
答案 2 :(得分:0)
试试这个,这可能有效
$(document).ready(function(){
var requestURL = 'http://www.football-data.org/soccerseasons?callback=?';
$.ajax({
type: 'GET',
dataType: 'json',
url:'requestURL'}). success: function(data){
console.log(data);
}
});
答案 3 :(得分:0)
你的控制台是否说这是一个交叉来源请求?如果是这样,您可能需要使用jsonp或代理。
<强> EDITED 强>
删除dataType:'json',它应该可以正常工作
原因是你的网址中有回调,而jquery足够智能来检测它。但是没有调用回调,所以它出错了。你还应该定义一个错误处理程序。如果删除dataType,jquery将自动检测数据类型,因此它可以工作。
答案 4 :(得分:0)
请试一试。
dataType: 'jsonp'
dataType:jsonp用于跨域请求,即对不同域的请求和dataType:json用于相同域的相同源请求。
答案 5 :(得分:0)
好的,问题是两部分。第一个是源自JSON标记的解析错误。如果从请求中删除JSON数据类型,您将看到的错误是跨站点脚本错误。请参阅下面的代码(如果您使用complete打印到控制台,您将每次都获得信息。您还应该考虑使用断点)
$(document).ready(function(){
console.log("doc ready");
var requestURL = 'http://www.football-data.org/soccerseasons?callback=?';
$.ajax({
type: 'GET',
url: requestURL,
complete: function(jqXHR, textStatus){
console.log(textStatus);
}
});
});
答案 6 :(得分:0)
我不确定你面临的问题是什么,但正如其他人提到的那样看起来像是一个CORS问题。我写了一篇关于CORS here的帖子,它解释了CORS并展示了ajax的例子。通过CORS GET请求ajax看起来像这样:
ajaxOptsCrossOrigin = {
xhrFields: {withCredentials: true}, //adds cookies, credentials
url: "https://"+server_name+"/get_link/",
dataType: 'json',
crossDomain: true,
data: data_vals,
success: function(resp){
//do something on success
},
};
jQuery.ajax(ajaxOptsCrossOrigin);
//In your case:
ajaxOptsCrossOrigin = {
xhrFields: {withCredentials: true}, //adds cookies, credentials
url: "http://www.football-data.org/soccerseasons?callback=?",
dataType: 'json',
crossDomain: true,
//data: data_vals,
success: function(resp){
//do something on success
alert(data);
},
};
jQuery.ajax(ajaxOptsCrossOrigin);
请注意,您正在与之交互的服务器应该启用CORS。希望它有帮助
答案 7 :(得分:0)
它不起作用的原因是因为football-api没有返回jsonp。但它使用CORS(跨源资源共享)。网站上有一些示例代码。我已经给出了下面的示例代码,并为您创建了一个小提琴。您所要做的就是用您通过电子邮件发送的密钥替换[ENTER API KEY HERE!]文本。 (如果您还没有API密钥,只需访问该网站并点击“免费API密钥”并输入您的电子邮件。他们会向您发送一封。
在小提琴中输入按键点击后,您将看到一个灯具列表。
$.ajax({
headers: { 'X-Auth-Token':'[ENTER API KEY HERE!]' },
url: 'http://api.football-data.org/alpha/soccerseasons/354/fixtures?timeFrame=n7',
dataType: 'json',
type: 'GET',
}).done(function(response) {
var regex = /.*?(\d+)$/; // the ? makes the first part non-greedy
var fixtureTable = "";
console.log(response);
fixtureTable += "<table>";
$.each(response.fixtures, function(i,v){
fixtureTable += "<tr><td>"+v.homeTeamName+"</td><td><strong>VS</strong></td><td style='text-align:right;'>"+v.awayTeamName+"</td><td>"+$.format.date(v.date, "ED MMM yyyy hh:mma")+"</td></tr>";
});
fixtureTable += "</table>";
$('#fixtureTable').html(fixtureTable);
});
答案 8 :(得分:0)
您必须注册才能获取API令牌并使用它,如下所示:
$.ajax({
headers: { 'X-Auth-Token': 'YOUR API TOKEN' },
url: 'http://api.football-data.org/v1/competitions/440/fixtures?timeFrame=n20',
dataType: 'json',
type: 'GET',
}).done(function(data) {
console.log(data);
})