Как получить доступ к данным результатов ajax jsonp, чтобы вернуть true или false? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть функция, которой нужно либо return true;, либо return false;, которая содержит ajax-вызов, который является методом определения условного результата на основе ответа.

Моя проблема заключается в определении объема, и я 'Я не уверен, как выбраться из этого.Если я установил как обратный вызов, то оператор return живет в самой функции обратного вызова и не выполняется в основной функции-обертке.

Как правильно настроить эту настройку?Нужно ли полностью реструктурировать?

function() {

     var response;

     $.ajax({
         dataType: 'jsonp',
         url: 'https://apilayer.net/api/check?access_key=',
         async: false,
         success: function(json) {
             response = json.score;         
         }
     });


     if (response == 1) {
         return false;
     }

 };

Ответы [ 3 ]

1 голос
/ 07 марта 2019
dataType: 'jsonp',
async: false,

Запросы JSONP не могут быть сделаны синхронно , поэтому async: false игнорируется.

Если вы не делали запрос JSONP, тогда используйтеasync: false все равно будет плохой идеей (базовая функция, от которой она зависит, устарела по уважительной причине).

Это означает, что вы не можете делать то, что хотите.

Ответы на Как мне вернуть ответ от асинхронного вызова? описать стратегии борьбы с этим.

0 голосов
/ 07 марта 2019

если вы используете async false, запрос станет синхронным, и код не будет выполнен, пока запрос не будет завершен.это замедлит работу браузера.

 var response = $.ajax({
         dataType: 'jsonp',
         url: 'https://apilayer.net/api/check?access_key=',
         async: false,
         success: function(json) {
             response = json.score;         
         }
     });
0 голосов
/ 07 марта 2019

Прежде всего, 'async = false' больше не поддерживается, поэтому вызов будет асинхронным по своей природе.Теперь у вас есть две опции:

  1. инициализировать условную переменную, т.е. ответ с некоторым значением.Таким образом, даже если ajax-ответ не получен, вы не столкнетесь ни с какой ошибкой в ​​условии if.
  2. поместите условный оператор в обратный вызов.

Если ваше условие основано на ответе ajax, то идеальным способом было бы поместить его в функцию обратного вызова.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...