【问题标题】:Javascript function not returning correctly [duplicate]Javascript函数未正确返回[重复]
【发布时间】: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


【解决方案1】:

您的 ajax 调用是异步的。这意味着您的 JavaScript 函数不返回任何内容,然后在 ajax 调用完成时调用您的成功/错误回调。

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 2013-06-26
    • 1970-01-01
    • 2021-09-26
    • 2014-03-05
    • 1970-01-01
    • 2022-11-26
    • 2010-11-14
    • 2015-01-06
    相关资源
    最近更新 更多