所以我的网站上有一个普通的链接,我想为它添加跟踪。我可以设想一些方法来做到这一点,但我已经通过编写一个小的jquery函数并在我的标签中删除一个小片段来解决这个问题:
<a href="newpage.html" onclick="saveClick(paramofpageclickhere);">click me!</a>
的javascript:
function saveClick(someparamhere){
$.ajax({
url: "somepage.php",
data: {param:someparamhere}
});
}
现在,我知道我的语法可能不好,我只是在询问整体概念。当您单击该链接时,我希望javascript发出对saveClick的调用,这会立即进行ajax调用。没有成功的处理程序,因为我真的不关心是否或返回什么。我只需要somepage.php记录事件。然后,在所有这些之后,我希望标签转到它的href。
是这样的吗?在文档进入另一页之前是否会发出ajax调用?这会在所有情况下都有效吗?
有没有人做过这样的事情?任何经验都会受到赞赏....
答案 0 :(得分:3)
如果你想确保AJAX通话可以通过:
<a href="newpage.html" data-parameters="paramofpageclickhere">click me!</a>
$('[data-parameters]').bind('click', function (event) {
//cache this element to use in AJAX function
var $this = $(this);
//prevent the default naviation
event.preventDefault();
$.ajax({
url: "somepage.php",
data: {param:$this.attr('data-parameters')}
success : function () {
//now navigate to the requested page
location = $this[0].href;
}
});
});
<强>更新强>
$.ajax()
公开timeout
函数:
<强> timeoutNumber 强>
设置请求的超时(以毫秒为单位)。这将覆盖 使用$ .ajaxSetup()设置的任何全局超时。超时时间开始 在$ .ajax调用的点上;如果有其他几个请求 进度和浏览器没有可用的连接,这是可能的 请求在发送之前超时。在jQuery 1.4.x和 如下所示,XMLHttpRequest对象将处于无效状态 请求超时;访问任何对象成员可能会抛出一个 例外。仅在Firefox 3.0+中,脚本和JSONP请求不能 超时取消;即使脚本到达,脚本也会运行 超时期限。
因此,您可以设置模仿timeout
函数的error
和success
函数。文档确实说明了:it is possible for a request to time out before it can be sent
但如果您的timeout
是一个非常小(可能为零)的延迟,那么它可以减少用户点击链接和浏览器加载新页面之间的延迟。
答案 1 :(得分:0)
我根本不会这样做......它可能会导致你的onclick事件没有被解雇。 我认为最好在执行ajax调用的click上调用javascript函数,然后将用户带到目标页面。
你可以这样做,例如,这样:
<a href="javascript:myfunc(paramofpageclickhere)">...</a>
你的javascript函数,应该是这样的:
myfunc(paramofpageclickhere) {
//do ajax call
saveClick(someparamhere);
//go to target page
location.href = "target.htm";
}