Получение текста ответа на вызов get Json - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь реализовать функцию, которая будет делать что-то, основываясь на тексте ответа, полученном определенным вызовом ajax. Но я не могу получить доступ к текстовому полю ответа. Вот мой код:

               var response = $.getJSON('/add_participant',{
                email : uemail,
                password : upassword
               })

, и я попытался получить к нему доступ таким образом:

response.responseText

Но когда я выхожу на консоль, он говорит, что он не определен.

Я думаю, что это как-то связано с вызовом ajax, который необходимо решить сначала, прежде чем я получу доступ к тексту ответа. Это потому, что если я сохраню его в глобальной переменной, когда я открою веб-страницу и использую инструменты проверки, я смогу получить доступ к responseText таким образом.

Как я могу получить этот ответный текст во время моей работы? Есть ли способ заставить скрипт ждать его разрешения или что-то еще?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Эй, я выяснил, что не так с моим кодом, и на самом деле это была проблема с кодом python, который я вызывал. Я настраиваю свой веб-сайт с библиотекой Flask в Python, и я использовал вызов ajax, чтобы использовать функцию python в серверной части и получить возвращаемый результат. Проблема заключалась в том, что когда я возвращал вывод в функции python, я возвращал строку, примерно так:

return ("It worked!")

Остальная часть функции все еще работала и делала то, что я хотел чтобы сделать, и я все еще мог проверить ответ, когда я использовал инструменты проверки. Но возвращенное значение было в неправильном формате. Похоже, это привело к тому, что код Javascript на внешнем интерфейсе не получил сообщение от Python о завершении функции Python. И по этой причине ничего в блоке .done (function (data) {}) не будет выполнено.

Чтобы это исправить, мне пришлось вместо этого вернуть jsonified словарь. jsonify - это функция из библиотеки flask. Вот как это должно выглядеть:

return(jsonify({'result': 'It worked!'}))

И затем, если вы хотите получить доступ к этим данным обратно в javascript, обратитесь к свойству результата объекта данных внутри .done ( функция (данные) {}) блок. Для меня это выглядело так:

var response = $.getJSON('/add_participant',{
                email : uemail,
                password : upassword
               }).done(function (data) {
                if (data.result ='It Worked!'){
                    console.log("It worked!!");
                    // Do whatever else you wanted

                }
                else{
                    console.log("It didn't work.");
                    // Do something else
                }


                })

0 голосов
/ 05 апреля 2020

Поскольку это выполняется асинхронно, вам нужно обработать его в .done обратном вызове. Вот пример кода.

var response = null; // assign to [] if you think you will receive an array
$.getJSON('/add_participant',{
  email : uemail,
  password : upassword
}).done(function (data) {
  response = data;
  console.log('response: ', data);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...