3

我希望增加(在数据库中)在移动浏览器中点击电话号码的次数。我在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 请求似乎被浏览器取消,因为它调用了它的本机程序。

以前有人经历过吗?解决方案?

在这里找到完全相同的问题,没有答案。

4

3 回答 3

2

感谢大家的回答 - 但是,我通过寻找涉及协议而不是协议的类似问题找到了解决方案。mailto://tel://

解决方案是使用 jQuery$.ajaxasync: false属性:

$.ajax({
    url: url,
    data: data,
    dataType: 'json',
    async: false,
    method: "POST"
}).then(function(r){
    if(r.success){}
}, 'json');
于 2013-08-30T09:35:41.510 回答
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");
        }
    });
});
于 2013-08-30T09:26:07.117 回答
0

您可以在增加服务器上的计数器后将响应重定向到它,而不是在 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 中的访问并不会真正阻止任何人)

于 2013-08-30T09:26:11.927 回答