【问题标题】:browser navigate to link before $.ajax request can finish在 $.ajax 请求完成之前浏览器导航到链接
【发布时间】:2009-09-27 00:53:31
【问题描述】:

单击锚链接后,我向服务器发送 $.ajax 请求。

但是,在完成之前,浏览器会导航到 href 位置。

最初我已将 e.preventDefault 放置在所有锚点上,并在成功后:对 href 执行 window.location。

这很好用,但是对于没有 href 属性的锚点,而不是一些 javascript 函数,这会失败,因为找不到 href,并且 ajax 请求失败。

【问题讨论】:

标签: jquery ajax


【解决方案1】:

在重定向之前检查 href 以确保它是有效的 url?

我建议不要使用<a href="javascript: ..."> 样式。而是使用<a href="#" onclick="...">,或者更好的是,在 javascript 本身中应用您的 javascript 处理程序,而不是在 HTML 标记中。从长远来看,这会让事情变得容易得多。只要您的点击处理程序返回 false,浏览器就不会重定向。

【讨论】:

    【解决方案2】:

    如果您想停止指向 HREF(已定义或未定义)的页面上的任何链接,您可以尝试

    $("a").click(function() { return false; });
    

    一旦链接被点击,jQuery 会返回 false,表示浏览器不会跟随链接,你也可以遵循同样的原则提交表单,这对你的 AJAX 很有用。

    养成的一个好习惯是将 ID 放在您将单独使用的元素上以执行 JavaScript,例如“隐藏”链接,<a href="" id="hide-me">Hide me</a> 可以使用来控制

    $("a#hide-me").click(function() {  
        // JavaScript to action goes here
        return false; 
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      相关资源
      最近更新 更多