最近在做项目时要做一个即时提醒功能,第一次做没思路。就百度了下。发现好多都说的模糊不清。我整理了下发出来大家指点下
jquery 代码:
这里使用使用ajax请求test页面获取success的值,请求超时时间为20秒。在20秒内若没数据返回则一直保持连接
$(function(){
$("#btn").bind(‘click‘,{btn:$(‘#btn‘)},function(e){
$.ajax({
type: ‘POST‘,
dataType: ‘json‘,
url: ‘test.php‘,
timeout: ‘20000‘,//请求超时时间
data: {time: ‘2000000‘},// 每次请求等待时间
success: function(data,status){
if(data.success == ‘1‘){
$("#msg").append(‘<br>[有数据]‘+data.text);
e.data.btn.click();
}
// 未从服务器中获的数据
if(data.success == ‘0‘){
$("#msg").append(‘<br>[无数据]‘);
e.data.btn.click();
}
},
// ajax超时,继续查询
error:function(XMLHttpRequest,textStatus,errorThrown){
if(textStatus == "timeout"){
$("#msg").append(‘超时‘);
e.data.btn.click();
}
}
});
});
});
php代码:
if(empty($_POST[‘time‘])) exit();
set_time_limit(0);// 无限请求超时时间
usleep($_POST[‘time‘]);// 等待时间
while(true){
$i++;
$rand = rand(1,999);
if($rand < 150){
$arr = array(‘success‘=>‘1‘,‘name‘=>‘有值‘,‘text‘=>$rand);
echo json_encode($arr);
exit();
}else{
$arr = array(‘success‘=>‘0‘,‘name‘=>‘无值‘,‘text‘=>$rand);
echo json_encode($arr);
exit();
}
}
时间: 2024-12-10 16:03:31