精华内容
下载资源
问答
  • jQuery无刷新加载PHP

    2015-11-01 12:21:42
    jQuery无刷新加载PHP. 该源码,需要在php服务器环境下测试.
  • jQuery无刷新加载PHP(5个实例).
  • jQuery无刷新加载PHP(4个例子).
  • 无刷新加载数据.rar

    2020-07-31 17:03:54
    网上大多无刷新加载数据的案例一般只有json代码或者php代码,对小白来说还是有点困难。我这个是一个完整案例,index页面查询输出首批数据,result页面接收js传达过去的请求,查询输出数据为json格式传递回去给index...
  • PHP页面实现局部刷新,无刷新加载方法其实挺多的。以前比较常用的是iframe这样来做。现在多了个ajax,所以一般情况下都是用的ajax。第一种方法,ajax实现: 当然,ajax使用起来确实很简单就可以实现,但是里面的很多...

    PHP页面实现局部刷新,无刷新加载方法其实挺多的。以前比较常用的是iframe这样来做。现在多了个ajax,所以一般情况下都是用的ajax。
    第一种方法,ajax实现:
    当然,ajax使用起来确实很简单就可以实现,但是里面的很多知识还是比较有点深的。我之前做页面时间自动刷新的功能就是用的ajax。完整代码是:
    1.getTime.php:

    <?php
    header("cache-control:no-cache,must-revalidate"); 
    header("Content-Type:text/html;charset=utf-8");
    $time = "2012-1-20 18:00:00";
    $dt_element=explode(" ",$time);
    $date_element=explode("-",$dt_element[0]);
    $time_element=explode(":",$dt_element[1]);
    $date = mktime($time_element[0],$time_element[1],$time_element[2],$date_element[1],$date_element[2],$date_element[0]);
    $nowTime = time(); 
    $showtime = date("北京时间Y年m月d日H:i:s",$date-$nowTime); 
    if($showtime<="北京时间1970年01月01日08:00:00"){
    echo "happy new year";
    }
    echo $showtime;

    2.zidong.php:

    </head> 
    <body> 
    <h1>Ajax动态显示时间</h1> 
    <input type="button" value="开始显示时间" id="go" onclick="start()" /> 
    <p>当前时间:<font color="red"><span id="showtime"></span></font></p> 
    </body> 
    <script type="text/javascript">
    var xmlHttp;
    function createXMLHttpRequest(){
    if(window.ActiveXObject){
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest){
      xmlHttp = new XMLHttpRequest();
    }
    }
    function start(){
    createXMLHttpRequest();
    var url="getTime.php";
    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange = callback;
    xmlHttp.send(null);
    }
    function callback(){
    if(xmlHttp.readyState == 4){
      if(xmlHttp.status == 200){
       document.getElementById("showtime").innerHTML = xmlHttp.responseText;
       setTimeout("start()",1000);
      }
    }
    }
    </script>
    </html>

    在浏览器里面直接访问zidong.php就可以了,点击里面的按钮就可以看到效果。
    这个就是用ajax做的刷新页面局部内容的小例子。你可能会怀疑:这里面没有跟数据库交互啊?这还不简单,直接在getTime.php页面里面操作就可以啦。
    这种方法就不用多说了吧。至于ajax里面的代码是什么意思,不要问我啦,我之前就说过,这里面的ajax还是有点深的。


    第二种方法:使用iframe方法实现。
    不要给我说用PHP 的include可以啊。你去试试吧。可以,可以就不会有那么多人在百度里面问了。
    这种方法呢说起来复杂,其实还是挺简单的。专访网作者说下原理吧:
    要刷新的页面中把要自动刷新的局部的代码单独拿出来,做成一个独立的页面,自动刷新有很多种方法:可以在这个独立页面中用javascript来控制,什么setTimeout("start()",1000);啊或者setInterval("start()",1000);(每隔1秒刷新页面)这样,还可以用meta标签实现:<meta http-equiv="Refresh" content="10">(每隔10秒刷新页面)。这样在原来的页面中用iframe来将它调用过来。这样就可以了。
    还是上示例代码吧:

    1.show.php:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <!--<meta http-equiv="refresh" content="5">--> 
    <title>Admin</title> 
    <script language="javascript" type="text/javascript" src="/extend/js/json.js" ></script> 
    <script language="javascript" type="text/javascript" src="/extend/menus.js"></script> 
    <script language="javascript" type="text/javascript" src="/extend/js/jquery-1.4.2.js"></script> 
    <link href="/css/main.css" rel="stylesheet" type="text/css" /> 
    <link href="/css/question.css" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript"> 
    //下面的isKeyTrigger()、ctrlEnter()、submitContent()方法是响应键盘事件提交内容的。兼容性不错。 
    function isKeyTrigger(e,keyCode){ 
    var argv = isKeyTrigger.arguments; 
    var argc = isKeyTrigger.arguments.length; 
    var bCtrl = false; 
    if(argc > 2){ 
    bCtrl = argv[2]; 
    } 
    var bAlt = false; 
    if(argc > 3){ 
    bAlt = argv[3]; 
    } 
    var nav4 = window.Event ? true : false; 
    if(typeof e == 'undefined') { 
    e = event; 
    } 
    if( bCtrl && 
    !((typeof e.ctrlKey != 'undefined') ? 
    e.ctrlKey : e.modifiers & Event.CONTROL_MASK > 0)){ 
    return false; 
    } 
    if( bAlt && 
    !((typeof e.altKey != 'undefined') ? 
    e.altKey : e.modifiers & Event.ALT_MASK > 0)){ 
    return false; 
    } 
    var whichCode = 0; 
    if (nav4) whichCode = e.which; 
    else if (e.type == "keypress" || e.type == "keydown") 
    whichCode = e.keyCode; 
    else whichCode = e.button; 
    return (whichCode == keyCode); 
    } 
    function ctrlEnter(e){ 
    var ie =navigator.appName=="Microsoft Internet Explorer"?true:false; 
    if(ie){ 
    if(event.ctrlKey && window.event.keyCode==13){ 
    submitContent(); 
    } 
    }else{ 
    if(isKeyTrigger(e,13,true)){ 
    submitContent(); 
    } 
    } 
    } 
    function submitContent(){ 
    save_answer();  
    } 
    function save_answer(){  
    var $content = $('#answer').val(); 
    var $save_answer_url = '<?php echo $save_answer_url;?>'; 
    if ( $content == '' ){ 
    alert("no data!"); 
    return; 
    } 
    var $post_data = { 
    content : $content , 
    qid:'<?php echo $question['ID'];?>', 
    uid:'<?php echo $questionUser['ID'];?>' 
    }; 
    //alert($save_answer_url); 
    $.ajax({ 
    type : 'post' , 
    url : $save_answer_url , 
    data : $post_data , 
    success : function( e ){ 
    var $rs = JSON.decode( e ); 
    if ( $rs.succ == 1 ){ 
    alert("answer success!"); 
    $('#answer').val(""); 
    location.reload(); //刷新页面 
    } else { 
    alert( $rs.msg ); 
    } 
    } 
    }); 
    } 
    //删除答案 
    function deleteanswer($id){ 
    var $delete_answer_url = '<?php echo $delete_answer_url;?>'; 
    var $post_data = { 
    id : $id 
    }; 
    if(confirm("are you sure delete?")){ 
    $.ajax({ 
    type : 'post' , 
    url : $delete_answer_url, 
    data : $post_data , 
    success : function( e ){ 
    var $rs = JSON.decode( e ); 
    if ( $rs.succ == 1 ){ 
    alert("delete success!"); 
    location.reload(); //刷新页面 
    } else { 
    alert( $rs.msg ); 
    } 
    } 
    }); 
    } 
    else{ 
    return; 
    } 
    } 
    设置为最佳答案 
    //function setbestanswer($id,$aid){ 
    //  var $set_bestanswer_url = '<?php echo $set_bestanswer_url;?>'; 
    //  var $post_data = { 
    //  id : $id , 
    //  aid : $aid 
    //  }; 
    //  if(confirm("are you sure set this answer is best?")){ 
    //  $.ajax({ 
    //  type : 'post' , 
    //  url : $set_bestanswer_url, 
    //  data : $post_data , 
    //  success : function( e ){ 
    //  var $rs = JSON.decode( e ); 
    //  if ( $rs.succ == 1 ){ 
    //  alert("set success!"); 
    //  location.reload(); //刷新页面 
    //  } else { 
    //  alert( $rs.msg ); 
    //  } 
    //  } 
    //  }); 
    //  } 
    //  else{ 
    //  return; 
    //  } 
    //
    //} 
    </script> 
    <!--<script language="javascript">--> 
    <!--setInterval("myajax();",1000);--> 
    <!--function myajax()--> 
    <!--{--> 
    <!--  //获取信息json数组 --> 
    <!--  var html2 = "";--> 
    <!--  html2 = "<table id=\"answerTable\"><tr><td class=\"answerHead\" colspan=\"2\"> 回答:"+--> 
    <!--   "</td></tr><tr><td><iframe width=0 height=0 src=\"check_new.php\"></iframe></td></tr>"+--> 
    <!--   "<?php if (isset($answers) && !empty($answers)) {foreach ($answers as $key=>$value){?>"+--> 
    <!--   "<tr><td class=\"boss\">"+--> 
    <!--   "<?php echo $value['Answer'];?>"+--> 
    <!--   "</td><td style=\"text-align:right;\">"+--> 
    <!--   "<?php if($_SESSION['ADMINISTRATOR']){?>"+--> 
    <!--   "<a href=\"javascript:deleteanswer(<?php echo $value['ID'];?>);\">"+--> 
    <!--   "<img src=\"/images/questiondelete.jpg\"  style=\"border:0;\"/></a>"+--> 
    <!--   "<?php   }?>"+--> 
    <!--   "</td></tr><tr><td class=\"answerAuthor\" colspan=\"2\">回答者:"+--> 
    <!--   "<?php echo $value['Email'];?>"+--> 
    <!--   "   回答时间:"+--> 
    <!--   "<?php echo $value['Date'];?>"+--> 
    <!--   "</td></tr><tr><td colspan=\"2\"><hr style=\"border: 1px dashed #ccc; width: 100%; height: 1px;\" /></td></tr>"+--> 
    <!--   "<?php }}else{?>"+--> 
    <!--   "<tr><td style=\"text-align:center;height:80px;\" colspan=\"2\">该问题目前还没有用户回答,你可以在下面填写内容来回答</td></tr>"+--> 
    <!--   "<?php }?>  </table>";--> 
    <!--  $("#answerDiv").html(html2);--> 
    <!--}--> 
    <!--</script>--> 
    <!--<script type="text/javascript">--> 
    <!--var xmlHttp;--> 
    <!--function createXMLHttpRequest(){--> 
    <!-- if(window.ActiveXObject){--> 
    <!--  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");--> 
    <!-- }--> 
    <!-- else if(window.XMLHttpRequest){--> 
    <!--  xmlHttp = new XMLHttpRequest();--> 
    <!-- }--> 
    <!--}--> 
    <!--function start(){--> 
    <!-- //alert("laslfda;f");--> 
    <!-- createXMLHttpRequest();--> 
    <!-- var url="/extend/check_new.php?sid="+Math.random()";--> 
    <!-- //var url = "../../view/product/check_new.php";--> 
    <!-- //alert(url);--> 
    <!-- xmlHttp.open("GET",url,true);--> 
    <!-- //alert(url);--> 
    <!-- xmlHttp.onreadystatechange = callback;--> 
    <!-- xmlHttp.send(null);--> 
    <!--}--> 
    <!--function callback(){--> 
    <!-- if(xmlHttp.readyState == 4){--> 
    <!--  //alert("asdflasdf");--> 
    <!--  //if(xmlHttp.status == 200){--> 
    <!--   document.getElementById("answerDiv").innerHTML = xmlHttp.responseText;--> 
    <!--   //alert(document.getElementById("answerDiv").innerHTML);--> 
    <!--   setTimeout("start()",1000);--> 
    <!--  //}--> 
    <!--  //alert(xmlHttp.status);--> 
    <!-- }--> 
    <!--}--> 
    <!--setInterval("start()",1000);--> 
    <!--</script>--> 
    </head> 
    <body onkeydown="javascript:ctrlEnter(event);"> 
    <center> 
    <div class="Container"> 
       <table> 
      <tr> 
       <th class="zongHead" colspan="2">  产品问题及回答详细列表</th> 
      </tr> 
      <tr> 
       <td colspan="2"><hr/></td> 
      </tr> 
      <tr> 
       <td class="questionHead" colspan="2"> 该问题详细内容:</td> 
      </tr> 
      <?php  
    if (isset($question) && !empty($question)) { 
      ?> 
    <tr> 
    <td class="questionContent" colspan="2"><?php echo $question['Question'];?></td> 
    </tr> 
    <tr> 
      <td class="author" colspan="2">提问者:<?php echo $questionUser['Email'];?>   提问时间:<?php echo $question['Date'];?></td> 
    </tr> 
      <?php  
    } 
      ?> 
      <tr> 
       <td colspan="2"><hr/></td> 
      </tr> 
    </table> 
    <iframe src="<?php echo get_url(array('m'=>'product','a'=>'product_newmsg','qid'=>$qid));?>" scrolling="no" frameborder="0" width="999px" onload="this.height=this.contentWindow.document.documentElement.scrollHeight"></iframe> 
    <!--<div id="answerDiv" class="answerDiv"> 
    <table id="answerTable"> 
      <tr> 
    <td class="answerHead" colspan="2"> 回答:</td> 
      </tr> 
      <tr> 
    <td><iframe width=0 height=0 src="check_new.php"></iframe></td> 
      </tr> 
    <?php  
    if (isset($answers) && !empty($answers)) { 
    foreach ($answers as $key=>$value){ 
    ?> 
    <tr> 
      <td class="boss"><?php echo $value['Answer'];?></td> 
      <td style="text-align:right;"> 
      <?php  
    if($_SESSION['ADMINISTRATOR']){//如果$_SESSION['ADMINISTRATOR']=0,即不是超级管理员,则不显示删除按钮 
      ?> 
       <a href="javascript:deleteanswer(<?php echo $value['ID'];?>);"><img src="/images/questiondelete.jpg"  style="border:0;"/></a> 
      <?php
    } 
      ?> 
      </td> 
    </tr> 
    <tr> 
    <td class="answerAuthor" colspan="2">回答者:<?php echo $value['Email'];?>   回答时间:<?php echo $value['Date'];?></td> 
    </tr> 
    <tr> 
    <td colspan="2"><hr style="border: 1px dashed #ccc; width: 100%; height: 1px;" /></td> 
    </tr> 
    <?php  
    } 
    }else{ 
    ?> 
    <tr> 
    <td style="text-align:center;height:80px;" colspan="2">该问题目前还没有用户回答,你可以在下面填写内容来回答</td> 
    </tr> 
    <?php  
    } 
    ?>
      </table> 
      </div> 
      --><table class="youWrite"> 
       <tr> 
    <td>你也回答一下吧:</td> 
       </tr> 
       <tr> 
    <td> 
      <textarea rows="10" cols="80" id="answer" name="answer"></textarea> 
    </td> 
       </tr> 
       <tr> 
    <td class="submits"><a href="javascript:save_answer();"><img style="border:0;" src="/images/questionbutton.jpg"/></a></td> 
    </tr> 
      </table> 
    </div> 
    </center> 
    </body> 
    </html> 
    
    2.product_newmsg.php:

    2.product_newmsg.php:

    <meta http-equiv="Refresh" content="10">
    <script language="javascript" type="text/javascript" src="/extend/js/json.js" ></script>
    <script language="javascript" type="text/javascript" src="/extend/menus.js"></script>
    <script language="javascript" type="text/javascript" src="/extend/js/jquery-1.4.2.js"></script>
    <link href="/css/main.css" rel="stylesheet" type="text/css" />
    <link href="/css/question.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
    //删除答案
    function deleteanswer($id){
    var $delete_answer_url = '<?php echo $delete_answer_url;?>';
    var $post_data = {
      id : $id
    };
    if(confirm("are you sure delete?")){
      $.ajax({
       type : 'post' ,
       url : $delete_answer_url,
       data : $post_data ,
       success : function( e ){
        var $rs = JSON.decode( e );
        if ( $rs.succ == 1 ){
         alert("delete success!");
         location.reload(); //刷新页面
        } else {
         alert( $rs.msg );
        }
       }
      });
    }
    else{
      return;
    }
    }
    </script>
    <div id="answerDiv" class="answerDiv">
        <table id="answerTable">
          <tr>
        <td class="answerHead" colspan="2"> 回答:</td>
          </tr>
    <!--  <tr>-->
    <!--<td><iframe width=0 height=0 src="check_new.php"></iframe></td>-->
    <!--  </tr>-->
    <?php
    
    if (isset($answers) && !empty($answers)) {
    foreach ($answers as $key=>$value){
    ?>
    <tr>
       <td class="boss"><?php echo $value['Answer'];?></td>
       <td style="text-align:right;">
       <?php
    if($_SESSION['ADMINISTRATOR']){//如果$_SESSION['ADMINISTRATOR']=0,即不是超级管理员,则不显示删除按钮
       ?>
        <a href="javascript:deleteanswer(<?php echo $value['ID'];?>);"><img src="/images/questiondelete.jpg"  style="border:0;"/></a>
       <?php 
    }
       ?>
       </td>
    </tr>
    <tr>
    <td class="answerAuthor" colspan="2">回答者:<?php echo $value['Email'];?>   回答时间:<?php echo $value['Date'];?></td>
    </tr>
    <tr>
    <td colspan="2"><hr style="border: 1px dashed #ccc; width: 100%; height: 1px;" /></td>
    </tr>
    <?php
    }
    }else{
    ?>
    <tr>
      <td style="text-align:center;height:80px;" colspan="2">该问题目前还没有用户回答,你可以在下面填写内容来回答</td>
    </tr>
    <?php
    }
    ?>
      </table>
      </div>

    这样就可以实现了。在浏览器中访问show.php就可以看到效果了。但是这个示例里面有很多东西操作了数据库。直接访问没什么效果。但是代码肯定是可以的。里面的原理和代码都是完整的。
    好了。这里必学智库小编就介绍这两种方法。有这两种方法已经可以完成基本上所有的页面局部刷新了。

    展开全文
  • ASP无刷新加载更多,也适用与php,.net其他语言
  • 主要介绍了PHP+jQuery实现滚屏无刷新动态加载数据功能,涉及php动态读取数据库及加载数据实现滚屏无刷新效果的具体操作技巧,需要的朋友可以参考下
  • 无刷新功能我们用到很多很多的,下面我就来给各位介绍一个实例,就是实现php+ajax实现无刷新滚屏加载数据,例子非常的简单大家只要按流程来操作就可以了哦。
  • ajax无刷新加载数据

    千次阅读 2017-05-16 15:15:10
    最近做了一个手机端的需求,里面有一个需要使用到ajax无刷新加载数据这样的功能 老样子先展示所需要实现的功能, 里面的数据是我的测试数据,随意了一点,但是能解决问题就行了,不要在意 正题来了: 首页...

    最近做了一个手机端的需求,里面有一个需要使用到ajax无刷新加载数据这样的功能

    老样子先展示所需要实现的功能,

    里面的数据是我的测试数据,随意了一点,但是能解决问题就行了,不要在意


    正题来了:

    首页就是当第一次访问的数据的时候,页面会加载出一部分数据,当你点击查看更多的时候会加载出另外一部分数据

    如下图所示:




    这时2数据有七条,仔细看一下第一张图的数据只有5条


    当再次点击的时候按钮就会变成没有更多的信息了,因为我总共添加了七条数据


    具体的实现手法很简单就是利用ajax的刷新加载数据

    上代码:

    1.以为页面比较简答,我就只贴一部分比比较重要的了

      按钮的代码:<a href="javascript:void(0);" title="查看更多" id="imore" class="imore">查看更多</a>

    请记好这个id值   下面还会用到,到时候别说不知道


    3.开始js代码

      注意:在这里我使用的jquery的ajax,别忘了在文件中引入jqery文件

      代码如下:

    <script>

      // 首先定义一下page  为  1  因为当也面第一次加载的时候默认加载的数据就是第一页的数据

        var page = 1;

        function getlist(page) {

           $.ajax({

              type : 'GET',

             //  cateid  这个参数根据自己项目的需求传参

              ur : '__CONTROLLER__/getlist/' +page+ '/cateid/'+<?php echo I(get.cateid) ?>',

             dataType  'json',

           success : function(data){

            //  data  为请求返回的数据  对data 进行遍历

           var hrtml = "";

           $(data).each(function(k,v) {

          //  测试使用

             html += '111<br/>';    

    });

    }

     });

    }

    // 刚开始加载的时候调用该函数

    getlist(1);

    $('#imore').click(funciton() {

        getlist(++page);

    })

    </script>


    4.后台处理方法:getlist

       public function getlist($p,$cateid) {

           //  这里的记载更多其实就是先将数据进行分页处理

         // 1.每一页需要显示多少条数据

        $perpage = 5;

        //   2.每一页的数据从哪一条开始显示

       $offset = ($p-1)*$perpage;

       $sql = "select * from cs_article where cateid=$cateid limit $offset,$perpage";

     $art = M();

     $res = $art->query($sql);

      $this->ajaxReturn();

    }



    ok   主要的就是这么多






















    展开全文
  • 一行代码实现全站pjax无刷新加载

    万次阅读 2018-10-26 04:36:17
    之前也没有研究过pjax,但是没事走访别人博客时看到不少经过pjax的网站,响应速度很快,今天一篇《一行代码实现全站pjax无刷新加载》测试后发发现效果确实不错,但是由于我是老的媒体范板子,且多次修改,难免在引用...

    之前也没有研究过pjax,但是没事走访别人博客时看到不少经过pjax的网站,响应速度很快,今天一篇《一行代码实现全站pjax无刷新加载》测试后发发现效果确实不错,但是由于我是老的媒体范板子,且多次修改,难免在引用之后出现一些些bug所以就放弃了pjax,本文转载记录一下。

    一:整合pjax的准备工作;

     

        检查你的网站是否引入1.7.0版本以上的jquery.js,如果没有请全局引入

     

    1.新浪CDN提速: 

    <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.0/jquery.js"></script>

        1.7.0版本以上的才有pushState的封装。

    二:开始整合pjax;

         1.下载pjax.js (本文底部);

         2.在你喜欢的位置(最好body代码结束前)引入pjax.js

    <script src="<?php echo TEMPLATE_URL; ?>js/pjax.js" type="text/javascript"></script>

    三:使用pjax;

        编辑模版footer.php在</body>标记结束前插入:

    <script> 
     $(document).pjax('a[target!=_blank]', '#contentleft', {fragment:'#contentleft', timeout:8000}); 
    </script>

    写好代码后,将容器contentleft付给一个ID,比如在body内的一个div,如:

    <body>
     <div id="contentleft"> 网站内容部分... </div> 
    </body>

    到这里就可以测试效果了,但是需要取消链接target=_blank效果才能有效哦。

    一切都搞定之后你就成功了。

    ps:pjax对收录不是很友好,大型网站慎用,限小型个人博客体验。

    展开全文
  • laravel无刷新加载之pjax

    千次阅读 2017-08-15 10:19:17
    1、简介 Pjax 是一个 jQuery 插件,其作用是使用 ajax 来加速页面加载时间,工作原理是只从服务器获取指定 HTML 片段,然后客户端使用获取到的内容更新局部页面。(关于pjax可以搜索了解) Laravel Pjax 扩展包将 ...

    1、简介

        Pjax 是一个 jQuery 插件,其作用是使用 ajax 来加速页面加载时间,工作原理是只从服务器获取指定 HTML 片段,
        然后客户端使用获取到的内容更新局部页面。(关于pjax可以搜索了解)
        Laravel Pjax 扩展包将 Pjax 集成到 Laravel 中,实现原理是提供一个中间件,返回 Pjax 期望的响应内容。
    

    2、安装

    通过 Composer 安装扩展包:$ composer require spatie/laravel-pjax
    

    接下来需要在 Kernel.php 中注册中间件,这里我们将其注册到web中间件组:

    // app/Http/Kernel.php
    protected $middlewareGroups = [
        'web' => [
            ...
            \Spatie\Pjax\Middleware\FilterIfPjax::class,
        ],
        ...
    ];

    3、使用

    该扩展包提供的中间件会处理服务端返回的内容并将其转化为 Pjax 插件期望服务端返回的内容。这里我们以 php artisan make:auth 命令生成的默认视图文件为例演示其使用,首先我们修改路由文件 routes.php:

    Route::group(['middleware' => 'web'], function (){
        Route::get('/index/ajaxcontent','IndexController@ajaxContent');// 加载页面
    });

    主视图文件 index\index.blade.php:

    ...
    <a href="/index/ajaxcontent"> 要加载的页面链接 </a>
    ...
    <!-- 添加 Pjax 设置:(必须有一个空元素放加载的内容) -->
    <div class="main-content" id="pjax-container">
        @yield('content') //与另一个视图文件对应
    </div>
    ...
    <!-- JavaScripts建议将这些js下载到本地 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.pjax/1.9.6/jquery.pjax.min.js"></script>
    <script>
        $(document).pjax('a', '#pjax-container');
        $(document).on("pjax:timeout", function(event) {
            // 阻止超时导致链接跳转事件发生
            event.preventDefault()
        });
    </script>

    控制器文件:

    class IndexController extends Controller
    {
        /**
         *  ajax加载页面
         */
        public function ajaxContent()
        {
            return view('content.index');
        }
    }

    要加载的视图文件 content\index.blade.php:

    @extends('index.index')//这里继承的是主视图文件
    @section('content')    //继承之后要加载的空间(页面地址)
        123123123123123    //要加载的页面
    @stop

    完成以上步骤,你会发现连续点击a标签页面不会发生跳转而直接进行刷新。
    如果有其他链接的页面,那么只会刷新 @yield(‘content’) 里的内容,主体视图内容已经被过滤掉。

    注:该扩展包会设置一个X-AJAX请求头以区别 pjax 请求和普通的 XHR 请求。在这种情况下,如果请求是 pjax,我们会跳过页面布局部分 HTML,只渲染页面主体部分内容。

    Laravel 缓存失效

    我们使用 Laravel Elixir 来管理前端缓存失效,你可以使用这种方法来让 Pjax 的缓存失效 —— 只需要引入elixir方法作为 x-pjax-version meta 的 content 即可:

    <meta http-equiv="x-pjax-version" content="{{ elixir('css/app.css') }}">

    如果是多个文件的话这使用:

    <meta http-equiv="x-pjax-version" content="{{ elixir('css/app.css') . elixir('css/app2.css') }}">

    这样的话,如果前端缓存失效,那么 Pjax 的缓存随之自动失效。

    展开全文
  • 总结今天这个实验的思路就是实现一个无刷新的页面加载效果。具体的思路是使用PHP开发后台,为前台准备数据,然后使用Ajax技术作为数据的搬运工,将数据从服务器端拉取到前端,最后使用JavaScript技术将获取到的数据...
  • ajax无刷新加载页面程序代码

    千次阅读 2014-09-22 13:20:01
    js ajax加载页面最基本的方法就是使用最原始的XMLHttpRequest方法来加载,还有一种办法就是使用iframe,现在流行了jquery ajax来局局无刷新加载页面,如jquery.load(),post,get都可实例。
  • 下面小编就为大家带来一篇php+jquery+html实现点击不刷新加载更多的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 全局无刷新加载 支持博客与 CMS 布局 内置 WP 优化策略 一键全站变灰 网页压缩成一行 后台防恶意登录 内置出色的 SEO 功能 评论 Ajax 加载 文章点赞、打赏 支持 Twemoji 集成 支持 QQ 登录 丰富的广告位 丰富的小...
  • JSON实现AJAX无刷新加载

    千次阅读 2010-03-01 21:22:00
    AJAX主要有三种:最简单的直接加载整个网页,然后通过innerHTML之类的办法显示在网页上,这个现在用Prototype.js的Ajax.Updater类能轻而易举地实现;另一种最常用的是加载一个只包含数据的文件(比如XML)然后通过一...
  • AJAX 下拉无刷新分页加载

    千次阅读 2017-05-11 18:00:29
    背景:最近在手机端开发功能显示列表数据时发现,如果数据过多,造成图片加载延迟,不适合即时的效果呈现,既影响用户体验,又显得没有技术含量,毕竟最后的说辞都怪在了倒霉程序猿的头上。通过度娘的帮助和自己的...
  • 滚屏加载更多数据,适合评论等页面 本例的数据库很简单,一看就明了 复制代码 代码如下: ”container”> <?php $query=mysql_query(“select * from content order by id desc limit 0,10”); while ($row=mysql_...
  • php+ajax实现无刷新动态加载数据技术 - 测试用了,效果还行 感觉IE下略慢,非IE速度可以,好像是不能用jquery-1.11.1.min.js,只能用网上找的代码中提供的JQuery.js我也不知道版本,我这里改名叫jquery_for_ajax....
  • 最近在手机端开发功能显示列表数据时发现,如果数据过多,造成图片加载延迟,不适合即时的效果呈现,既影响用户体验,又显得没有技术含量!通过自己测试,可以提供下面的一种方式,个人使用的是PHP开发,可以借鉴...
  • 无刷新动态加载数据,滚动条加载

    千次阅读 2013-10-10 16:29:04
    无刷新动态加载数据,滚动条加载 滚屏加载更多数据,适合评论等页面本例的数据库很简单,一看就明了演示 PHP Code "container"> $query=mysql_query("select * from content order by id desc limit 0,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,858
精华内容 14,743
关键字:

php无刷新加载