2015-01-28 4 views
0

Я создаю систему комментариев на моей CMS на базе Laravel.Функция Javascript не возвращается правильно

Логика, над которой я сейчас работаю, когда удаляется комментарий, я запускаю вызов ajax, чтобы проверить, сколько комментариев есть, и если комментариев больше нет, тогда я покажу сообщение «Нет комментариев».

У меня все работает, но последняя часть.

Моя функция всегда возвращается не определена.

Функция:

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; 

Тогда функция возвращает неопределенное ...

Любые идеи?

+3

Добро пожаловать в асинхронный javascript, держись, позволь мне найти обманщика. – Jamiec

+0

Он будет возвращен undefined, так как запрос ajax будет задерживаться всегда, используйте библиотеку 'q', чтобы справиться с ней [Q] (http://stackoverflow.com/questions/10642459/i-need-some-help-promises-and- q-library) – Saqueib

+0

Ваша функция всегда будет возвращать 'undefined', поскольку вы ничего не возвращаете. Хотя я уверен, что это будет не единственная проблема. – Xotic750

ответ

-2

Ваш аякс-вызов является асинхронным. Это означает, что ваша функция JavaScript ничего не возвращает, а позже, когда вызов ajax завершается, вызывается обратный вызов успеха/ошибки.

Смежные вопросы