Zwrócenie wartości z zapytania Ajax

Zwrócenie wartości z zapytania Ajax
L9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: nie wasz interes
  • Postów: 51
0

Witam, mam następującą funkcję w jQuery.

Kopiuj
function getTranslate(text) {

            return $.post(
                'index.php',
                {
                    option: 'com_projekty',
                    task: 'project.getTranslate',
                    format: 'json',
                    text: text,
                    tmpl: 'raw'
                },
                function(respJSON){
                    return respJSON.text;
                },
                'json'
            );

        }

Następnie przy pomocy console.log() wyświetlam zwrócone dane.

Kopiuj
console.log(getTranslate('ACTUAL_EDIT'));

W takim przypadku otrzymuje na wyjściu:

2020-03-08_17-55-22.png

Kiedy natomiast wpiszę:

Kopiuj
console.log(getTranslate('ACTUAL_EDIT').readyState);

Otrzymuje na wyjściu 1.

Natomiast w przypadku gdy wpiszę

Kopiuj
console.log(getTranslate('ACTUAL_EDIT').respJSON);

lub

Kopiuj
console.log(getTranslate('ACTUAL_EDIT').responseJSON);

to otrzymuje na wyjściu undefined.

Wartość którą chciałbym zwrócić to "Aktualnie edytujesz: ", czyli to co znajduje się pod responseJSON.text. podejrzewam, że rozwiązanie będzie banalne. Czy wie ktoś dlaczego otrzymuje undefined i jak mam wyświetlić prawidłową wartość? Pozdrawiam.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Jako że wywołanie $.ajax() jest asynchroniczne, musisz albo wykorzystać callback:

Kopiuj
function getTranslate(text, callback) {
  $.ajax({
    /* ... */
  }).done((response) => {
    callback(response.text);
  });
}

getTranslate('xxx', (translated) => {
  console.log(translated);
});

... albo, nawet lepiej (wygodniej), Promise.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.