Необходимо перенаправить на страницу, когда значение истинно - PullRequest
0 голосов
/ 05 февраля 2019

Необходимо перенаправить на страницу, когда значение равно true на основе вызова ajax.Проблема заключается в том, что страница перенаправляется, если возвращается значение true или false.

<a class="btn btn-warning" onclick="return clickthis(25007); " href="test.aspx?id=eheAhgpAS38=">Start </a>
function clickthis(obj) {
  var bValid = false;

  function ajax1() {
    return $.ajax({
      type: "POST",
      url: "order.aspx/ActivateLocation",
      data: '{id:' + obj + '}',
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(r) {
        if (r.d == "1") {
          bValid = true;
        } else {
          $('#overlay').remove();
          $.growl.error({
            title: "Error",
            message: "An error occurred, Please try again."
          });
          bValid = false;
        }
      }
    });
  }

  $.when(ajax1()).done(function(a1) {
    return bValid;
  });
}

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Проблема исправлена.Я использовал кнопку вместо тега привязки.

0 голосов
/ 05 февраля 2019

Во-первых, в функцию clickthis() не передается событие, вы, кажется, путаетесь с ненавязчивыми обработчиками событий в этом отношении.Также обратите внимание, что вы не можете вернуть что-либо из вызова асинхронного метода, как вы пытаетесь это сделать из обработчика done().Вместо этого вы можете просто вызвать window.location.assign() в $.ajax() обратном вызове.

<a class="btn btn-warning" data-id="25007" href="test.aspx?id=eheAhgpAS38=">Start </a>
$('a.btn').click(function(e) {
  e.preventDefault();

  $.ajax({
    type: "POST",
    url: "order.aspx/ActivateLocation",
    data: { id: obj },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(r) {
      $('#overlay').remove();

      if (r.d == "1") {
        window.location.assign($(this).attr('href'));
      } else {
        $.growl.error({
          title: "Error",
          message: "An error occurred, Please try again."
        });
      }
    }
  });
});

Обратите внимание, что в приведенном выше примере я предоставляю объект для data.Это предпочтительная практика по сравнению объединения строк вместе.

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