Как я могу заставить jQuery выполнять синхронный, а не асинхронный Ajax-запрос?

1154
задан Artem Tikhomirov 22 May 2018 в 13:04
поделиться

2 ответа

От документация jQuery : Вы определяете асинхронный опция быть ложь для получения синхронного запроса Ajax. Тогда Ваш обратный вызов может установить некоторые данные, прежде чем Ваша родительская функция продолжится.

Вот то, на что Ваш код был бы похож, если изменено, как предложено:

beforecreate: function (node, targetNode, type, to) {
    jQuery.ajax({
        url: 'http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),
        success: function (result) {
            if (result.isOk == false) alert(result.message);
        },
        async: false
    });
}
1112
ответ дан Peter Mortensen 22 May 2018 в 13:04
поделиться

Отличное решение! Когда я пытался реализовать это, я заметил, что если я возвращал значение в предложении успеха, оно возвращалось как undefined. Мне пришлось сохранить его в переменной и вернуть эту переменную. Я придумал следующий метод:

function getWhatever() {
  // strUrl is whatever URL you need to call
  var strUrl = "", strReturn = "";

  jQuery.ajax({
    url: strUrl,
    success: function(html) {
      strReturn = html;
    },
    async:false
  });

  return strReturn;
}
135
ответ дан 19 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: