php和HTML前端后端互相推送数据

 admin   2021-12-23 10:25   941 人阅读  0 条评论

Ajax+PHP实现网页实时更新

要想实现网页内容实时更新,我们经常采用的是长连接的方式。即用户浏览器与服务器之间在访问页面的时候建立长连接,在服务器端有新数据的时候,及时的推送至客户端。

示例代码如下:

前端网页部分源码:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

  3. <head>

  4.     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

  5.     <script  type="text/javascript" src="http://s1.hqbcdn.com/??lib/jquery/jquery-1.7.2.min.js"></script>

  6. </head>

  7. <body>

  8. <div id="msg"></div>

  9. <input id="btn" type="button" value="测试" />

  10. <script  type="text/javascript" >

  11.     $(function(){

  12.         $("#btn").bind("click",{btn:$("#btn")},function(evdata){

  13.             $.ajax({

  14.                 type:"POST",

  15.                 dataType:"json",

  16.                 url:"data.php",

  17.                 timeout:80000,     //ajax请求超时时间80秒

  18.                 data:{time:"80"}, //40秒后无论结果服务器都返回数据

  19.                 success:function(data,textStatus){

  20.                     //从服务器得到数据,显示数据并继续查询

  21.                     if(data.success=="1"){

  22.                         $("#msg").append("<br>[有数据]"+data.text);

  23.                         evdata.data.btn.click();

  24.                     }

  25.                     //未从服务器得到数据,继续查询

  26.                     if(data.success=="0"){

  27.                         $("#msg").append("<br>[无数据]");

  28.                         evdata.data.btn.click();

  29.                     }

  30.                 },

  31.                 //Ajax请求超时,继续查询

  32.                 error:function(XMLHttpRequest,textStatus,errorThrown){

  33.                     if(textStatus=="timeout"){

  34.                         $("#msg").append("<br>[超时]");

  35.                         evdata.data.btn.click();

  36.                     }

  37.                 }


  38.             });

  39.         });


  40.     });

  41. </script>

  42. </body>

  43. </html>

后端响应前端请求部分源码:

  1. <?php

  2.     if(emptyempty($_POST['time']))exit();

  3.     set_time_limit(0);//无限请求超时时间        

  4.     $i=0;

  5.     while (true){

  6.         //sleep(1);        

  7.         usleep(500000);//0.5秒        

  8.         $i++;


  9.         //若得到数据则马上返回数据给客服端,并结束本次请求        

  10.         $rand=rand(1,999);

  11.         if($rand<=15){

  12.             $arr=array('success'=>"1",'name'=>'xiaoyu','text'=>$rand);

  13.             echo json_encode($arr);

  14.             exit();

  15.         }


  16.         //服务器($_POST['time']*0.5)秒后告诉客服端无数据        

  17.         if($i==$_POST['time']){

  18.             $arr=array('success'=>"0",'name'=>'xiaoyu','text'=>$rand);

  19.             echo json_encode($arr);

  20.             exit();

  21.         }

  22.     }

  23. ?>



本文地址:http://www.lovo.tk/?id=5
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?