我遇到了一个问题:
我有一个html文件,它上面有很少的超链接,点击任何这些超链接 ,生成动态URL并将用户重定向到该动态创建的URL。
现在我试图在重定向之前点击这些超链接进行ajax调用,但是 它失败了,萤火虫节目中止了ajax请求。
我没有以正确的方式做事吗?为什么会流产?
提前致谢
答案 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。
你的, 伊万