Вы должны понимать, что ajax
по умолчанию асинхронный характер, поэтому вам нужно подождать, пока сервер ответит, прежде чем использовать usercount
, который доступен только внутри обработчика успеха.Либо сделайте синхронный вызов, установив async
на false
, либо дождитесь ответа сервера.
Переместите свой код в обработчик успеха
$(".alphabet").hover(function () {
$.ajax({ type: "POST",
url: "cfc/basic.cfc?method=CountUsersByLetter&returnformat=json",
data: "nbw=" + $(this.target).val(),
datatype: "html",
success: function(usercount){
//alert(usercount);
$(this).append($("<span>" + usercount +"</span>"));
},
error: function (xhr, textStatus, errorThrown){
// show error
//alert(errorThrown);
console.log('errorThrown');
}
});
},
function () {
$(this).find("span:last").remove();
}
);
Я бы не советовал делать синхронныйвызов, потому что это заставляет всю страницу ждать, и иногда браузер полностью зависает, если серверу требуется время для ответа.