Скорее всего, потому что вы выполняете ajax-вызов, который по своей природе асинхронный.Асинхронная функция не может вернуть значение, поскольку нет способа узнать, когда завершится асинхронный вызов.
Если вы используете jQuery, у вас есть два альтернативных варианта решения этой проблемы.Если вы используете jQuery 1.5 или более поздней версии, вы можете использовать отложенные объекты.Отложенные объекты - это новый объект, который позволяет использовать jQuery для взаимодействия с асинхронным кодом.
По умолчанию функция jjery ajax (т. Е. $ .Ajax, $ .get, $ .post, $ .getJSON) возвращает отложенный объект, поэтому все, что вам нужно сделать, это сохранить ваш вызов ajax в переменнойи затем вызовите доступные методы, перечисленные в API jQuery Deferred Object.Вот один из лучших уроков, которые я видел в jQuery Deferred Objects.http://www.erichynds.com/jquery/using-deferreds-in-jquery/
var sendResponse = $.get("/getResponse");
//Somewhere else in your code
sendResponse.success(function(response) {
return response;
});
Другие опции - синхронный вызов jquery ajax.Это можно сделать, установив для свойства async ajax значение false .
$.ajax({
url: "someURL",
async: false
});