jquery无法读取undefined属性’done’ – 避免这种情况

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

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

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

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不是函数

你可以只返回一个延迟,这样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; } 

小提琴