1. 程式人生 > >laravel無重新整理載入之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','[email protected]');// 載入頁面 });

主檢視檔案 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 的快取隨之自動失效。

相關推薦

laravel重新整理載入pjax

1、簡介 Pjax 是一個 jQuery 外掛,其作用是使用 ajax 來加速頁面載入時間,工作原理是隻從伺服器獲取指定 HTML 片段, 然後客戶端使用獲取到的內容更新區域性頁面。(關於pjax可以搜尋瞭解) Laravel Pjax

emlog實現全站pjax重新整理載入頁面

  宣告,pjax技術對SEO收錄不是很友好,大型網站慎用,限小型個人部落格體驗。 一:整合pjax的準備工作;     檢查你的網站是否引入1.7.0版本以上的jquery.js,如果沒有請全域性引入 1.新浪CDN提速: 

Laravel 5.1Ajax重新整理分頁

ajax無重新整理分頁的優點: 1、區域性重新整理 減輕壓力 2、美觀 提高使用者體驗 php程式碼: /* @Laravel框架 @Ajax無重新整理分頁(簡單7步驟) */ public fu

laravelajax重新整理分頁

ajax無重新整理分頁的優點: 1、區域性重新整理 減輕壓力 2、美觀 提高使用者體驗 php程式碼: /* @Laravel框架 @Ajax無重新整理分頁(簡單7步驟) */ public function page() { //1、查詢資料庫總條數 $count = count(Db::table(

PJAX實現頁面重新整理跳轉及載入資料(瀏覽器可回退前進)

$.pjax({ url: '訪問後臺的url', container: '需重新整理的div等容器的id' }); pjax可以很好的實現無重新

thinkphp+ajax 移動端實現滾動到底部載入資料(重新整理動態載入資料技術的應用)

監聽滾動條的js檔案地址:http://ons.me/526.html 1、dropload.css檔案 .dropload-up,.dropload-down{     position: relative;     height: 0; &n

基於jQuery的ajax系列用FormData實現頁面重新整理上傳

接著上一篇ajax系列之用jQuery的ajax方法向伺服器發出get和post請求寫,這篇主要寫如何利用ajax和FormData實現頁面無重新整理的檔案上傳效果,主要用到了jQuery的ajax()方法和XMLHttpRequest Level 2的FormData介面。

easyrecyclerview 重新整理載入功能程式碼分析(填坑旅)

想選一個重新整理載入 又可以新增各種header 的列表控制元件,挑來挑去也就easyrecyclerview 最好用了, 可是重新整理載入 卻也有bug 1.重新整理的時候不能載入,載入的時候不能重新整理,解決重新整理的時候不能載入(我的方案

laravel ajax重新整理替換圖片 並改變資料表狀態值

@section('js') <script type="text/javascript"> function change(ele){ var img = $(ele).children();//得到子節點 var my

PHP + JavaScript + Ajax 實現重新整理頁面載入效果

今天這個實驗的思路就是實現一個無重新整理的頁面載入效果。具體的思路是使用PHP開發後臺,為前臺準備資料,然後使用Ajax技術作為資料的搬運工,將資料從伺服器端拉取到前端,最後使用JavaScript技術將獲取到的資料加工,並顯示在頁面上。 資料來源工

Android PullToRefresh 分析五、擴充套件重新整理載入樣式

<?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" > <FrameLayout android

監督學習聚類2——DBSCAN

odi alt times 指標 pyplot shape otl 明顯 score 根據學生月上網時間數據運用DBSCAN算法計算: #coding=utf-8 import numpy as np import sklearn.cluster as skc from

【HDU 1272】小希的迷宮(並查集向圖回路問題)

problem 沒有 現在 new 一行 回路 問題 ima namespace 描述 上次Gardon的迷宮城堡小希玩了很久(見Problem B),現在她也想設計一個迷宮讓Gardon來走。但是她設計迷宮的思路不一樣,首先她認為所有的通道都應該是雙向連通的,就是說如果

天下難試多線程面試刁難大全

面試 程序員 多線程 多線程技術在互聯網技術方面使用如此廣泛,幾乎所有的後端技術面試官都要在並發編程的使用和原理方面對小夥伴們進行各種刁難。作為一名在互聯網技術行業打擊過成百上千名【請允許我誇張一下】的資深技術面試官,看過了無數落寞的身影失望的離開,略感愧疚,故獻上此文,希望各位讀者以後面試勢如破

Laravel展示產品-CRUDshow

ext isp ted fin -c ger display inf edi   上一篇講了Laravel創建產品-CRUD之Create and Store,現在我們來做產品展示模塊,用到是show,①首先我們先修改controller,文件是在/app/Http/Con

Laravel編輯產品-CRUDedit和update

-o img cti ems csrf res gist https item   上一篇講了Laravel展示產品-CRUD之show,現在我們說一下Laravel編輯產品,涉及到編輯和更新,   1,定義controller,update和create有點相似,我們復

SwipeRefreshLayout+Recyclerview的重新整理載入封裝

目錄 1.簡介 2.自定義的SwipeRefreshLayout 1)全域性變數和基礎方法 2)onlayout拿到RecyclerView,設定載入更多的監聽 3)其餘的判斷標準 3.Activity中的使用 4.xml佈局使用 5.介面卡和單行佈局 1.簡

分享一個自己寫的MVC EF 增刪改查 重新整理分頁程式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android UI 自定義ListView 實現下拉重新整理 載入更多

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PHP+layui圖片上傳(重新整理)

一、下載layui部署到專案,在頁面引入layui.css和layui.js。  二、html程式碼 <div class="layui-form-item"> <label class="layui-form-label">圖片</label