微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery getScript函数永远不会失败?

永远不会调用jQuery getScript失败函数.看到这个小提琴:
http://jsfiddle.net/getsetbro/8xNMs/

$.getScript("http://api.jquery.com/scripts/jquery.NO-SUCH-FILE.js").done(function() {
    console.log('yep');
}).fail(function() {
    console.log('fail function does not fire fine');
});

永远不会调用完整的函数
http://jsfiddle.net/getsetbro/ns6yQ/

$.ajax({
    url: url,type: 'get',crossDomain: true,dataType: 'script',async:false,cache:false,success: function(result) {
        console.log('SUCCESS');
    },error: function(result) {
        console.log('ERROR');
    },complete: function(result) {
        console.log('COMPLETE');
    }
})

哦,在IE中它实际上会触发SUCCESS和COMPLETE它应该失败. = [

解决方法

.fail不适用于跨域请求.

// Bind script tag hack transport
jQuery.ajaxTransport( "script",function(s) {

    // This transport only deals with cross domain requests
    if ( s.crossDomain ) {
    ...
    script = document.createElement( "script" );

脚本元素不会触发错误等.

但它适用于同一个域名. http://jsfiddle.net/8xNMs/2/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐