Ajax调用在重定向之前中止

时间:2014-08-08 13:12:38

标签: javascript jquery html ajax

我遇到了一个问题:

我有一个html文件,它上面有很少的超链接,点击任何这些超链接 ,生成动态URL并将用户重定向到该动态创建的URL。

现在我试图在重定向之前点击这些超链接进行ajax调用,但是 它失败了,萤火虫节目中止了ajax请求。

我没有以正确的方式做事吗?为什么会流产?

提前致谢

3 个答案:

答案 0 :(得分:2)

当您单击将触发网址更改的超链接时,中止所有内容。如果您尝试通过单击该超链接执行某些操作,则会由于浏览器移动到新位置而中止。要在实际移动到url之前成功运行ajax,您必须执行以下操作:

<a href="http://domain.com/myDynamicUrl"></a>

document.querySelector('a').addEventListener('click', function (event) {
  event.preventDefault();
  doMyAjaxThing(function () {
    location.href = event.currentTarget.getAttribute('href');
  });
});

答案 1 :(得分:2)

正如我所见,你已经被告知搬到一个新的地方会中止一切。我想补充一点,你需要记住,如果你做了类似的事情:

//hyperlinkclick function
{

   $.ajax({ 
      ... });

   window.location = 'somewhere under the rainbow ... '; 
}

这并不意味着您的ajax调用已在重定位之前执行! Ajax调用是异步的,因此如果您想在调用完成后重新定位,可以在ajax调用的成功回调中设置重定位行,也可以将其用作承诺:

var call = $.ajax({ ... });
call.done(function() { 
   window.relocate = "the middle of nowhere";
}

答案 2 :(得分:0)

    //hyperlinkclick function
    {

       $.ajax({ 
  success: function addgetdata(returns) {
       window.location = 'somewhere under the rainbow ... '; 
}
          ... });


    }

您需要在您的hyperlinkclick函数中使用ajax方法,因此当您单击它时,它将首先引发ajax函数。你把重定向放在你的ajax成功函数中,所以当ajax完成后,它会重定向到新的url。

你的, 伊万