jquery无法读取未定义的属性'done' - 避免这种情况

时间:2014-04-16 17:11:27

标签: javascript jquery undefined

我有一个返回结果的函数(或不返回)。问题是当它没有返回我在控制台中获得的任何值的消息

  

无法读取未定义的属性“已完成”

这是真的,我确实理解这个问题。此外,此错误不会使我的代码停止工作,但我想知道是否有机会避免这种情况?

ajax中的函数是:

function getDelivery(){
    var items = new Array();

    $("#tab-delivery tr").each(function(){
        items.push({"id" : $(this).find('.form-control').attr('id'), "id_option" : $(this).find('.form-control').val()});
    });

    if(items.length > 0){
        return $.ajax({
            url: 'response.php?type=getDelivery',
            type: 'POST',
            data: {content: items}
        });
    }
}

我称之为:

getDelivery().done(function(data){ // the problem is here
    if(data == false){
        return;
    }
});

那么,有没有办法避免错误?我试过以下没有成功:

if(items.length > 0){
    return $.ajax({
        url: 'response.php?type=getDelivery',
        type: 'POST',
        data: {content: items}
    });
}else{
    return false;
}

我收到错误:

  

未捕获的TypeError:undefined不是函数

1 个答案:

答案 0 :(得分:7)

您可以返回延迟,done()回调不会产生错误,您可以选择是否解决

if(items.length > 0){
    return $.ajax({
        url: 'response.php?type=getDelivery',
        type: 'POST',
        data: {content: items}
    });
}else{
    var def = new $.Deferred();
    def.resolve(false);
    return def;
}

FIDDLE