值为true时需要重定向到页面

时间:2019-02-05 17:31:25

标签: jquery ajax

当基于ajax调用的值为true时,需要重定向到页面。问题是,如果返回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 :(得分:2)

首先,没有事件传递给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提供对象。这是优先于将字符串串联在一起的做法。

答案 1 :(得分:0)

问题已解决。 我用按钮代替了锚标签。