Исходя из фона PHP, я часто сталкиваюсь с такой проблемой, когда программирую на JavaScript и jQuery. Мне нужна функция, которая должна взять переменную и выполнить поиск на сервере, чтобы получить результат статуса.
Вместо того, чтобы повторять один и тот же код (который я сейчас делаю, и мой начальник не любит) в 4 разных местах, я бы предпочел, чтобы это была функция, которую я могу вызывать из любого места.
Фактический код намного сложнее, я сократил его до базовой концепции для целей этого вопроса.
Я попытался использовать «async: false», чтобы функция ожидала завершения вызова ajax перед возвратом, но это не сработало.
Решение, вероятно, заключается в использовании функции обратного вызова. Как именно это работает и как мне нужно структурировать свой код для универсального достижения этого в разных местах моего приложения (кода)?
var sample = "ABC12345";
var samplestatus = getStatus(sample);
console.log("!!!!" + samplestatus + "!!!!");
function getStatus(samplenumber) {
var jsonurl = "lookup.php?s="+samplenumber;
$.ajax({
url: jsonurl,
dataType: 'json',
async: false,
success: function(data1) {
var s_status;
if (typeof(data1[0]) !== 'undefined') {
var data = data1[0];
s_status = data.STATUS;
console.log("Sample " + samplenumber + " has a status of "+s_status);
return(s_status);
} else {
return(0);
}
}
});
}
Выход:
Sample ABC12345 has a status of COMPLETED
!!!!undefined!!!!