javascript - $.each 在 Firefox 中引发错误(e 未定义),但在 Chrome 中工作正常

标签 javascript jquery firefox

查看这个 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+'&regionCode=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/

相关文章:

javascript - 无法让 jQuery 动画切换工作

firefox - Linux 上的 headless 、可编写脚本的 Firefox/Webkit?

javascript - 在 DevExtreme Widgets 中使用 $scope 中存储的数据

javascript - 更改窗口时视频仍在后台播放

javascript - 使用 javascript 使用算法解决问题

css - 某些 CSS 类在 FF 中停止工作,但在 Chrome 中仍然有效

html - 如何在 Firefox 11 中自动换行此列表项?

javascript - 具有特定扩展名的电子邮件验证?

jquery - 如何在 Bootstrap 3 中将变量传递给模态

php - 通过 AJAX 从 PHP 发回多个结果