我希望增加(在数据库中)在移动浏览器中点击电话号码的次数。我在锚点上使用tel://
协议,如:
<a class='phone-number' href='tel:12345678901'>Call Now!</a>
想法是在点击链接时向服务器发送AJAX请求。
$(".phone-number").click(function(e){
var url = "phone_tap.php";
var data = {id: 1};
$.post(url, data, function(r){
if(r.success){}
});
}
然而,在Web和移动浏览器中,AJAX请求似乎被浏览器取消,因为它调用了它的本机程序。
以前有人经历过这个吗?溶液
找到完全相同的问题here但没有答案。
答案 0 :(得分:2)
感谢大家的回答 - 但是,我找到了解决方案,搜索a similar issue涉及mailto://
协议而不是tel://
协议。
解决方案是使用jQuery $.ajax
的{{1}}属性:
async: false
答案 1 :(得分:0)
也许这有效。
将链接更改为:
<a class="phone-number" href="#" data-number="123456789">Call ya!</a>
点击处理程序:
$(".phone-number").on("click", function(ev) {
ev.preventDefault();
var url = "phone_tap.php";
var data = {id: 1};
$.post(url, data, function(r){
if(r.success){
window.location = "tel://" + $(this).data("number");
}
});
});
答案 2 :(得分:0)
您可以在服务器上递增计数器后,将resoponse重定向到,而不是在html中使用href中的数字。
您可以完整删除ajax调用,只需链接到每个号码的phone_tap.php?id=...
。
在phone_tap.php
内,您必须执行以下操作:
UPDATE statistics SET number_of_taps=number_of_taps+1 WHERE id=:id
并以类似的结尾结束:
header('location: tel:' . $phone_number);
对我来说,这似乎是最简单的扫描仪,作为奖励,它也可能会阻止刮刀从您的页面获取电话号码。 (只是拒绝在robots.txt中访问不会真正阻止任何人)