我无法弄清楚我对此做错了什么。它在另一个页面上对我有用,但它不适用于此页面(capitalbikeshare)。 '数据'变量确实包含一个对象,但是当我尝试打印出长度或特定项时,它会给我一个错误信息,说它无法读取null" feed'的属性。我究竟做错了什么?
animation: animation 1.5s infinite alternate;
以下是XML文件的一小部分示例。
$.ajax({
url:'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent('https://www.capitalbikeshare.com/data/stations/bikeStations.xml'),
dataType : 'jsonp',
success: function (data) {
var entry = data.responseData.feed.entries;
var entry_length = entry.length;
alert("success"+entry_length);
},
error: function(jqXHR, textStatus, errorThrown) {
alert("fail");
}
});
答案 0 :(得分:1)
该Web服务旨在解析rss提要而非任意XML。
正确的AJAX通话
$.ajax({
url: 'http://ajax.googleapis.com/ajax/services/feed/load',
dataType : 'jsonp',
data: {
v: "1.0",
num: 10,
q: 'https://www.capitalbikeshare.com/data/stations/bikeStations.xml'
},
success: function (data) {
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.error(textStatus);
}
});
以
回应{
"responseData": null,
"responseDetails": "Feed could not be loaded.",
"responseStatus": 400
}
尝试data.responseData.feed.entries
,如果feed
为responseData
,您显然无法访问null
。
如果您使用其他Web服务,例如cors.io,则可以加载xml,然后使用jQuery访问字段,而不是加载JSON。
$.ajax({
url: 'http://cors.io',
dataType : 'xml',
data: {
u: 'https://www.capitalbikeshare.com/data/stations/bikeStations.xml'
},
success: function (data) {
console.log(data);
$(data).find(">stations>station>name").each(function(){
console.log($(this).text());
});
},
error: function(jqXHR, textStatus, errorThrown) {
console.error(textStatus);
}
});
答案 1 :(得分:0)
您可能希望使用JSON.stringify()api从AJAX中转储所获取数据的内容,以查看该属性是否确实存在。
success: function (data) {
console.log('Dumping data object -> ' + JSON.stringify(data, null, 4));
}
如果您使用的是chrome,则可以通过“ ctrl + shift + j ”访问控制台输出面板。