查看这个 JSFiddle:http://jsfiddle.net/cDVQP/1/
如果您同时拥有 Chrome 和 Firefox,您可以看到它在 Chrome 中按预期工作,但在 Firefox Firebug 控制台中您会收到“TypeError: e is undefined” 在 JSFiddle 上,错误显示为“TypeError:obj 未定义”
我花了几个小时寻找这个错误并试图找出它,最后放弃并来到这里。是什么原因造成的?
这是要测试的完整代码:
<html>
<body>
<div id="x"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
getVideos('cats');
});
function getVideos(query){
var url = 'https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=2&q='+query+'®ionCode=us&type=video&fields=items(id)&key=AIzaSyCCOnozV0lEfnjfMTjpc4TFExAeIGJ6Fh0';
$.ajax({
url: url,
success: function(data){
appendVideos(data);
}
});
}
function appendVideos(data){
// works here
console.log(data);
// but not in $.each
$.each(data.items, function(i, item){
$('#x').append(item.id.videoId + '<br>');
});
}
</script>
</body>
</html>
最佳答案
我看起来数据是作为字符串传递到appendVideos中的,而不是像你想象的那样是一个对象。我做了一个
for(i in data) {
alert(i+'='+data[i]);
}
它的作用就像一根绳子。
这解决了它:
$.ajax({
url: url,
dataType: 'JSON',
success: function(data){
appendVideos(data);
}
});
}
关于javascript - $.each 在 Firefox 中引发错误(e 未定义),但在 Chrome 中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057770/