【发布时间】:2015-01-28 12:13:14
【问题描述】:
我正在基于 Laravel 的 CMS 上制作评论系统。
我目前正在处理的逻辑是当删除评论时,我运行一个 ajax 调用来检查有多少 cmets,如果没有更多 cmets,那么我将显示一条消息“没有 cmets”。
我一切正常,但最后一部分。
我的函数总是返回 undefined。
功能:
function checkCommentCount($id){
var rootAsset = $('.rootAsset').html();
$.ajax({
url: rootAsset+'postcommentcount/'+$id,
type: 'post',
cache: false,
dataType: 'json',
data: $(this).serialize(),
success: function(data) {
if (data.success) {
//return +data.count;
console.log(data.count);
}
},
error: function(xhr, textStatus, thrownError) {
alert('Something went to wrong.Please Try again later...');
}
});
}
这会正确记录通过 JSON 返回的计数变量。所以PHP端没问题。
但是,如果尝试在其他地方运行该函数:
console.log(checkCommentCount(1648));
它总是返回未定义的。我需要让函数返回一个数字值,以便进行检查。
控制台日志在函数中运行良好,但如果我将其更改为:
return data.count;
然后函数会返回 undefined...
有什么想法吗?
【问题讨论】:
-
欢迎使用异步javascript,等一下,让我找到骗子。
-
由于ajax请求总是会延迟,所以会返回undefined,使用
q库处理Q -
你可以让调用同步...
-
这通常是个坏主意。
-
除非你从函数中返回整个承诺,否则你不会返回任何东西——你会使用回调。
标签: javascript jquery ajax json function