【问题标题】:Handling jsonp errors处理 jsonp 错误
【发布时间】:2014-05-02 01:39:28
【问题描述】:

我有一个代码来检查 Youtube 视频总时间并使用 jQuery ajax 获取持续时间

代码似乎没有发现错误。我做错了什么?

// get Video Total Time
var youTubeURL = 'http://gdata.youtube.com/feeds/api/videos/'+ video_code +'?v=2&alt=json';

$.ajax({
    'async': false,
    'global': false,
    'url': youTubeURL,
    'dataType': "jsonp",
    crossDomain: true,
    error: function (xhr, testStatus, error) {
        console.log('error: '+'$.ajax() error');
    },
    success: function (data) {
        var duration = data.entry.media$group.yt$duration.seconds;
        console.log('total time: '+duration);
    }                       
});

【问题讨论】:

    标签: jquery ajax youtube jsonp


    【解决方案1】:

    您在 success: 函数中正确地进行了字符串连接,但在 error: 函数中出现了拼写错误。

    // get Video Total Time
    var youTubeURL = 'http://gdata.youtube.com/feeds/api/videos/'+ video_code +'?v=2&alt=json';
    
    $.ajax({
        'global': false,
        'url': youTubeURL,
        'dataType': "jsonp",
        error: function (xhr, testStatus, error) {
            console.log('error: '+ error);
        },
        success: function (data) {
            var duration = data.entry.media$group.yt$duration.seconds;
            console.log('total time: '+ duration);
        }                       
    });
    

    【讨论】:

    • 我没有看到错误日志。我收到错误 404s 和 403s 但没有看到错误函数触发。
    • 如果我正在阅读jquery ajax documentation 对,Note: This handler is not called for cross-domain script and cross-domain JSONP requests.
    • 嗨。我真的不明白你的意思,但这个例子触发了错误处理程序。 jsfiddle.net/SrQqP/31
    • @SonnyG - 更新了答案以删除您的 'async': false, 行。你需要这个是同步的吗?根据文档,Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation.
    • 好的。我阅读了 ajax 文档并且 ethorn10 是正确的。 JasonP 错误处理程序不支持跨域脚本和跨域 jsonp 请求。基本上这段代码永远不会工作。还有其他方法可以检查 YT 视频时长吗?
    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 2013-04-08
    • 2011-12-02
    • 2012-10-12
    • 1970-01-01
    • 2013-10-02
    相关资源
    最近更新 更多