在ajax调用后停止锚标记的HREF值时,返回false不起作用

时间:2019-06-23 03:44:44

标签: javascript jquery ajax

我有这样的链接。

<a class="case" href="/communication/index">Link Name</a>

我有一个处理程序。

 $('.case').on('click',function () {
        checkCaseIsParked(this);
  });

在此checkCaseIsParked方法中,我进行了ajax调用,成功后,我将比较返回值,如果它是true,那么我想防止它返回到下一个站点,即href上的链接。

success: function (result, status, xhr) {
      if (result) { return false; }
            else { return true };
    }

我尝试过返回错误但没有运气的情况

1 个答案:

答案 0 :(得分:1)

return false必须同步发生。由于您不知道重定向是否应该在响应返回后才发生,因此无论您是否return false(或preventDefault()),都应该click()(如果响应说重定向正确,请手动{ {1}}:

const checkCaseIsParked = elm => {
  console.log('processing');
  setTimeout(() => {
    if (elm.id === 'case') {
      elm.click();
    } else {
      console.log("failed");
    }
  }, 1000);
};

$('#case, #case2').on('click', function(event) {
  if (event.originalEvent.isTrusted) {
    // event was triggered by user input, not by Javascript
    checkCaseIsParked(this);
    event.preventDefault();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="case" href="/communication/index">pass</a>
<a id="case2" href="/communication/index">fail</a>