Я пытаюсь реализовать ответ, приведенный в следующем вопросе: How do I return the response from an asynchronous call?Получение Аякса данных обратно вызывающей функции - необходимо уточнение предыдущего ответа
Прокрутка вниз к ответу по Hemant Bavle (в настоящее время 62 голосов). Это именно то, что я пытаюсь реализовать, но все равно не повезло. Вот моя попытка (я опустил ajaxSetup()
и fail()
для краткости):
function isGoodPIN(pin) {
var result;
var cURL = "server/checkPIN?pin=" + pin;
function setResult(ajaxResult) {
result = ajaxResult; // <--------- true here...
}
var ajaxResponse = $.get(cURL, function (data) {
// data is "OK" here...
setResult(data == "OK" ? true : false);
});
return result; //<--------- undefined here
}
Является ли это проблемой, поскольку сфера результат setResult()
является локальным для setResult()
и не видно за его пределами? Если да, то каково решение этой проблемы?
Почему вы все еще используете 'return', когда вы определили обратный вызов? Вся суть ответов на этот вопрос заключается в том, что вы не можете использовать оператор return при предоставлении данных из запроса AJAX. * Не используйте return *. Весь код, зависящий от результата запроса AJAX *, должен быть помещен в функцию обратного вызова, в вашем случае 'setResult()'. –
Да, Рори. Меня преподают на этом уроке. Хотел не делать работу в обратном вызове. Спасибо –
Я пытаюсь сделать функцию, которая вернет true/false, если данный PIN-код действителен или нет. Для этого требуется призыв ajax, но получение этого проклятого значения обратно из вызова ajax вызывающей функции действительно приводит меня в ногу. ;-) –