【问题标题】:Check if youtube video id exists Javascript检查 youtube 视频 ID 是否存在 Javascript
【发布时间】:2012-11-10 04:46:48
【问题描述】:

我有以下代码,其中 realurl = 'TOwd30wXc-0'(youtube 视频 ID):

$.ajax({
        url: "http://gdata.youtube.com/feeds/api/videos/"+realurl+"?v=2&alt=json-in-script",
        dataType: "jsonp",
        contentType: "application/json; charset=utf-8",
        success: function (data) { PreviewVideo(data) }
    });

PreviewVideo(data) 是解析 json 响应并用它做其他事情的函数。

我的问题是,如果视频 ID 不正确(不存在),我不会收到任何通知。我尝试将error: function() { alert('error occured') } 添加到 $.ajax 中,但它什么也没做。

有人知道如何确定视频是否正常吗?如果视频存在,则调用 PreviewVideo(data),否则 - 调用 VideoError() ?

编辑:如果我输入了无效的 ID,我会得到 ​​p>

GET http://gdata.youtube.com/feeds/api/videos/TOwd30wXc-?v=2&alt=json-in-script&callback=jQuery17205096300751902163_1353530502856&_=1353530692237 400 (Bad Request) 

在 javascript 控制台 (Chrome) 中

提前致谢

【问题讨论】:

  • 您能否同时提供realurl 的有效值和无效值,以便我们查看应该从 API 返回的内容?
  • How abt if(data != null){PreviewVideo(data)} .. 仅当请求或响应出错时才调用错误函数。否则它将成功回调
  • 我尝试了以下方法:成功:函数(数据){ if(数据!= null){ PreviewVideo(数据)} else { alert('invalid'); } } 但它不工作

标签: javascript ajax api youtube response


【解决方案1】:

根据the jQuery forums,您无法捕获错误请求。也就是说,statusCodeerror 参数无济于事(这是有道理的,因为它确实应该在成功时调用每个确定的函数名)。

不过,有一个使用延迟对象接口的解决方法,example here(由 jQuery 论坛上的Kevin B 提供)

我收回它,认为它可以使用超时解决,这似乎是 previous SO question 上的 best solution

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2016-02-26
    • 2014-07-01
    • 2021-10-19
    相关资源
    最近更新 更多