【问题标题】:Jquery won't catch ajax errors with youtube apiJquery 不会使用 youtube api 捕获 ajax 错误
【发布时间】:2012-08-17 23:55:40
【问题描述】:

我正在尝试使用 jquery 从 youtube api 获取一些视频数据和搜索结果数据。由于某种原因,我拥有的代码没有发现任何错误。 这是一个视频 ID 格式错误的 jsFiddle。当我在控制台中测试它时,这会返回一个错误,但由于某种原因,我的代码无法正常工作。 我最初尝试使用 getJson 和那里的错误处理方法,但没有奏效。

我是 jquery 和 ajax 的新手,尤其是我能得到的所有帮助将不胜感激!

这是我的代码(在 jsFiddle 中也是一样的)。

$.ajax({
    url: 'https://gdata.youtube.com/feeds/api/videos?category=dogs&orderby=published&alt=json&callback=?&max-results=5',
    //contentType: "application/json; charset=utf-8",
    dataType: 'json',
    success: function(data) {
        $.each(data.feed.entry, function(i, item) {
            var title = item['title']['$t'];
            var video = item['id']['$t'];
            var video = video.replace('http://gdata.youtube.com/feeds/api/videos/', 'http://www.youtube.com/watch?v=');
            var videoID = video.replace('http://www.youtube.com/watch?v=', '');
            $.ajax({
                url: 'https://gdata.youtube.com/feeds/api/videos/' + videoID + 'MALFORMEDID?v=2&alt=json&callback=?',
                //contentType: "application/json; charset=utf-8",
                dataType: 'json',
                success: function(videoData) {
                    alert(title);
                },
                ajaxError: function(e) {
                    alert("could not find youtube vid");
                }
            });
        });
    },
    error: function(e) {
        alert("oh no!");
    }
});​

【问题讨论】:

  • 尝试dataType : jsonp 而不是json

标签: ajax jquery youtube-api


【解决方案1】:

试试

error: function(e) {

而不是

ajaxError: function(e) { 

编辑:

在执行 jsonp 时似乎不会调用错误回调。请参阅手册。

http://api.jquery.com/jQuery.ajax/

您可能想改用 getJSON。

http://api.jquery.com/jQuery.getJSON/

【讨论】:

  • 对不起,我尝试不同的东西时留下的。它仍然不起作用。但它的意思是这样说。
  • 真的。我用你的 jsFiddle 试过了,它奏效了。你用的是什么浏览器?
  • 似乎只有 IE 会触发错误。但我找到了原因。查看我更新的问题
  • 啊,谢谢!通过快速阅读我发现的文档:“JSONP 如果 URL 包含字符串“callback=?”(或类似的,由服务器端 API 定义),则请求被视为 JSONP。请参阅讨论$.ajax() 中的 jsonp 数据类型以获取更多详细信息。”所以我所要做的就是删除“回调=?”来自 api url 的参数。谢谢你的帮助!!
  • 我不确定,但我认为您不能删除回调参数,因为您正在调用外部域 (gdata.youtube.com) 上的 URL。如果你想在不同的域上做ajax,你必须使用jsonp,它需要callback=?
猜你喜欢
  • 2013-09-22
  • 2018-03-17
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2019-11-09
  • 1970-01-01
相关资源
最近更新 更多