我是jQuery的新手,我正在尝试开发一个点击计数器
jQuery => Ajax => PHP => MySQL的
所以我有这个结构:
function clck(id) {
$.post(
'http://counter:8888/sts/click.php', {
id: id,
htmltitle: (document.title + " <br/> " + '(' + document.location.href + ')'),
clicktitle: ($("$this\[onClick\]").attr("title") + " <br/> " + '(' + $("$this\[onClick\]").attr("href") + ')')
});
}
我正在使用这个调用jQuery:
<a href="http://google.com" onClick="javascript:clck(1)" title="google1">google 1</a>
<a href="http://fb.com" onClick="javascript:clck(2)" title="fb 2">fb 2</a>
因此它适用于第一个链接,但是当我按下第二个链接时,它会在第一个链接中写入相同内容。
我需要的是:页面标题,页面URL,链接标题和链接href
所有这些必须由Ajax单独发送给PHP。
感谢J_Caselles(它很棒),poncha和rtpHarry
所以,为我工作代码:
function clck(id) {
$.post(
'http://counter:8888/sts/click.php', {
id: id.split("link_")[1],
htmltitle: document.title + " <br/> (" + document.location.href + ")",
clicktitle: $("#" + id).attr("title") + " <br/> (" + $("#" + id).attr("href") + ")"
});}
并致电
<a id="link_1" href="http://google.com" title="google1" onClick="javascript:clck(this.id)">google 1</a>
<a id="link_2" href="http://fb.com" title="fb 2" onClick="javascript:clck(this.id)">fb 2</a>
答案 0 :(得分:1)
我会这样写:
$("a").click(function () {
$.post(
'http://counter:8888/sts/click.php', {
id: $(this).data("linkid"),
htmltitle: (document.title + " <br/> " + '(' + document.location.href + ')'),
clicktitle: $(this).attr("title") + " <br/> (" + $this.attr("href") + ")";
});
});
然后像我这样做我的标记:
<a href="http://google.com" data-linkid="1" title="google1">google 1</a>
<a href="http://fb.com" data-linkid="2" title="fb 2">fb 2</a>
答案 1 :(得分:1)
您必须传递链接的实际ID(当然首先提供它)。
<a href="http://google.com" id="link1" onClick="javascript:clck(this.id)" title="google1">google 1</a>
<a href="http://fb.com" id="link2" onClick="javascript:clck(this.id)" title="fb 2">fb 2</a>
然后选择带有id的链接。简单。
function clck(id) {
$.post(
'http://counter:8888/sts/click.php', {
id: id.split("link")[1],
htmltitle: document.title + " <br/> " + '(' + document.location.href + ')'),
clicktitle: $("#" + id).attr("title") + " <br/> " + '(' + $("#" + id).attr("href") + ')')
});
}