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');