在做一些会员系统的时候,经常需要对会员收到短信息进行声音提醒,这就需要AJAX在后台循环调用会员收到信息状态, 一单收到信息就播放特定音乐进行提醒
这里用了TP5作为后端演示
前端代码:html>
function longPolling()
{
$.ajax({
type:"GET",
url:"/admin/index/music",
timeout:30000, //超时时间30秒,30秒内没有完成请求,则取消请求然后error回调函数会被调用
success:function(data){ //返回的回调函数
if(data==1)//状态码为200,完全成功才响起提示音
{
playsound();
}
//也有状态码为204,也是success回调函数,但是textStatus==nocontent
setTimeout(longPolling, 10000); //再发起一个连接请求
},
error:function(XMLHttpRequest, textStatus, errorThrow){
if(textStatus=="timeout") //请求超时
{
setTimeout(longPolling, 10000);
}
else // 其他错误,如网络错误等
{
setTimeout(longPolling, 10000);
}
}
});
}
longPolling();
//响起提示音
function playsound()
{
var myAuto = document.getElementById('myaudio');
myAuto.src="/static/9725.wav";
}
后端代码,主要是判断有无信息,有信息就输出1public function music()
{
$message = Db::name('message')->where(array('bptype'=>0,'isverified'=>0))->sum('bpprice');
if($message>0){
echo "1";
}
else{
echo "0";
}
}
到这里就完成了轮询查询,和声音播放的功能了