yii2 how to use pjax when hyperlink is not in pjax

后端 未结 3 878
名媛妹妹
名媛妹妹 2021-01-21 09:09

To use pjax in yii2, just like:


 \'btn btn-lg btn-primary\']);?>
&         


        
相关标签:
3条回答
  • 2021-01-21 09:35

    Just like this:

    <?= Html::a("Refresh", ['site/index'], ['class' => 'btn btn-lg btn-primary']); ?>
    <?php Pjax::begin(); ?>
    
    <h1>Current time: <?= $time ?></h1>
    <?php Pjax::end(); ?>
    

    it worked!

    0 讨论(0)
  • 2021-01-21 09:45

    I think this can solve your problem.

    <span class="my-btn  btn btn-lg btn-danger">refresh</span>
    <a href="javascript:function() { return false; }" class="my-btn btn btn-lg btn-primary"> refresh a</a>
    
    <?php
    
    $this->registerJs(
       '$("document").ready(function(){ 
            $(".my-btn").on("click", function() {
                $.pjax.reload({container:"#greet"});
            });
        });'
    );
    ?>
    <?php yii\widgets\Pjax::begin(['id'=>'greet']); ?>
    
    <h1>Current time: <?= time() ?></h1>
    <?php yii\widgets\Pjax::end(); ?>
    
    0 讨论(0)
  • 2021-01-21 09:47

    PJAX has timeout option. If PJAX not obtain AJAX response during this timeout, it will perform full page reload. Use following JS snippet:

    $.pjax.defaults.timeout = false;       // For JS use case yor should manual override default timeout.
    $.pjax.reload({container: '#pjaxId'});
    

    or more short snippet:

    $.pjax.reload('#pjaxId', {timeout : false});
    

    Moreover in my projects I use overrided version of Pjax:

    /**
     * Custom Pjax with incremented timeout.
     * JS for Pjax updating:
     *  <code>
     *      $.pjax.defaults.timeout = false;             // For JS use case yor should manual override default timeout.
     *      $.pjax.reload({container: '#pjaxId'});
     *
     *      // OR
     *      $.pjax.reload('#pjaxId', {timeout : false});
     *
     *      // OR for gridview with search filters
     *      $('.grid-view').yiiGridView('applyFilter'); // Thats true only if you have search Filters
     *  </code>
     *
     * Note: In more cases ID of widget should be static, because widgetId is autoincremented and browser version of page may be not up-to-date.
     */
    class Pjax extends \yii\widgets\Pjax
    {
        /**
         * @var int Timeout {@link \yii\widgets\Pjax::$timeout}.
         *          For JS use case yor should manual override defaults (  $.pjax.defaults.timeout = false;  ).
         */
        public $timeout = 30000;
    }
    
    0 讨论(0)
提交回复
热议问题