Блок успеха успешно выполняется - PullRequest
0 голосов
/ 03 октября 2018

Я новичок в jQuery и столкнулся с проблемой ниже.Вот обработчик кликов, который у меня есть.Проблема заключается в том, что код в блоке успеха вызова ajax выполняется после завершения метода click.

Я высоко ценю ваши замечания, которые помогут мне решить эту проблему.Большое спасибо.

$('#back').click(function(e) {
  var isSelected = false;
  var bf = {};

  isSelected = confirm("Do you want to ?");
  if (isSelected == true) {
    self.delegate.getRf(id, id2).success(function(data) {
      bf = data;
    }).error(function(data) {

    });
  }

  //other code that is to be executed
});

1 Ответ

0 голосов
/ 03 октября 2018

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

пример асинхронного запроса,

$('#back').click(function(e) {
 var isSelected = false;
 var bf = {};
 isSelected = confirm("Do you want to ?");
 if (isSelected == true) {
   $.ajax({
     type: "POST",
     async:false,
     url: "/pages/test/",
     success: function(result) {
      bf = data;// now our bf is available inside a function
    },
    error: function(result) {
    alert('error');
    }
  });
 //do whatever you want to do with bf.
}

для отложенного обещания, пожалуйста, посетите this

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