javascript - ajax 调用阻止 anchor 标记的 HREF 值后返回 false 不起作用

标签 javascript jquery ajax

我有一个这样的链接。

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

我有一个处理程序。

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

在这个 checkCaseIsParked 方法中,我进行了 ajax 调用,如果成功,我会比较返回值,如果为真,那么我想阻止它转到下一个站点,即 href 上的链接。

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

我尝试返回 false 但没有运气

最佳答案

返回 false 必须同步发生。由于在响应返回之前您不知道是否应该发生重定向,因此无论如何您都应该返回 false(或 preventDefault()),然后,如果响应说重定向没问题,手动click()它:

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>

关于javascript - ajax 调用阻止 anchor 标记的 HREF 值后返回 false 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56720832/

相关文章:

javascript - 如何使CSS圆形微调器的前缘半月形

javascript - 完全匹配javascript时如何获取对象数组中对象的索引

javascript - 如何让这个由 Javascript 设置固定位置的 DIV 留在包含的 DIV 中?

javascript - 为什么调用google map api后需要写alert()

javascript - 如何使用lodash从具有特定属性的JSON获取对象?

javascript - 如何在页面上引用多个相同的用户控件

javascript - jquery 每个如果值存在则追加到前一个值

javascript - 了解使用ajax的前端删除

javascript - 自动完成功能不适用于使用 Jquery 的搜索框

php - 如何处理海量数据集并提供实时用户体验