Как я могу сделать: var value = foo (bar); Где foo функция, которая ищет значение через запрос JSON - PullRequest
0 голосов
/ 15 ноября 2018

Исходя из фона 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!!!!

1 Ответ

0 голосов
/ 15 ноября 2018

Вы должны вернуться из вызываемой функции.

function getStatus(samplenumber) {
    var jsonurl  ="lookup.php?s="+samplenumber;

    return $.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;  
            }
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...