Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 基于ajax的电话协议_Jquery_Mobile - Fatal编程技术网

Jquery 基于ajax的电话协议

Jquery 基于ajax的电话协议,jquery,mobile,Jquery,Mobile,我希望(在数据库中)增加手机浏览器中点击电话号码的次数。我在锚上使用tel://协议,如: 其思想是在点击链接时向服务器发送AJAX请求 $(".phone-number").click(function(e){ var url = "phone_tap.php"; var data = {id: 1}; $.post(url, data, function(r){ if(r.success){} }); } 然而,在web和移动浏览器中,AJ

我希望(在数据库中)增加手机浏览器中点击电话号码的次数。我在锚上使用
tel://
协议,如:

其思想是在点击链接时向服务器发送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请求似乎都会被浏览器取消,因为它会调用其本机程序

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

发现了完全相同的问题,但没有答案。

也许这是可行的

将链接更改为:

<a class="phone-number" href="#" data-number="123456789">Call ya!</a>

在增加服务器上的计数器后,您可以将应答重定向到它,而不是在html的href中包含该数字

您可以完全删除ajax调用,只需为每个号码链接到
phone\u tap.php?id=…

phone\u tap.php内部,您必须执行以下操作:

UPDATE statistics SET number_of_taps=number_of_taps+1 WHERE id=:id
并以如下内容结束:

header('location: tel:' . $phone_number);

这似乎是对我做这件事的最简单的方法,而且作为一个额外的好处,它也可能会阻止窃听者从你的页面上获取电话号码。(仅仅在robots.txt中拒绝访问并不会真正阻止任何人)

感谢所有人的回答-但是,我找到了解决方案,找到了
mailto://
协议,而不是
tel://
协议

解决方案是使用jQuery
$。ajax
async:false
属性:

$.ajax({
    url: url,
    data: data,
    dataType: 'json',
    async: false,
    method: "POST"
}).then(function(r){
    if(r.success){}
}, 'json');

我想知道您是否在
touchstart
上调用该调用,它是否会触发请注意可能的影响?它是异步JAX。使用
async:false
可以使其同步。所以没有任何错误,但至少有一种代码味道。
$.ajax({
    url: url,
    data: data,
    dataType: 'json',
    async: false,
    method: "POST"
}).then(function(r){
    if(r.success){}
}, 'json');