2016-05-14 6 views
1

を提出し、私はpjaxは、2番目のフォームの提出にページをリロードする理由を把握していないような第2のフォームにページ全体をリロードします。それはこのURLから引き出す最初のフォーム提出で意図されたとおりに正確に動作しますが、最初のフォームの後には/site/profile?UserSearch%5Bsearchstring%5D=mの終了が失われます。私は実際のHTMLコードをチェックし、フォームにはdata-ajax属性が保持されています。 pjaxがページ全体をリロードしているときに提案されていたように、タイムアウトを増やしてみましたが、何も変わりませんでした。以下はYii2 Pjaxは

すべてのpjaxがリロード後にあなたが好き/機能をトリガーに必要なJavaScriptを呼び出す必要があります私の見解

<?php Pjax::begin(['timeout' => 5000, 'id' => 'form-pjax']); ?> 
    <?php $form = ActiveForm::begin([ 
     'method' => 'get', 
     'action' => Url::to(['site/profile']), 
     'options' => ['data-pjax' => true ], 
    ]); ?> 

     <?= $form->field($searchModel, 'searchstring', [ 
       'template' => '<div class="input-group">{input}<span class="input-group-btn">' . 
       Html::submitButton('Search', ['class' => 'btn btn-default']) . 
       '</span></div>', 
      ])->textInput(['placeholder' => 'Find friends by username or email']); 
     ?> 

    <?php ActiveForm::end(); ?> 

    <?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'columns' => [ 
      'username', 
      [ 
       'label' => 'View Profile', 
       'format' => 'raw', 
       'value'=>function ($data) { 
        return Html::a(Html::encode("View Profile"),'/site/redirectprofile/'.$data->id); 
       }, 
      ], 
      [ 
       'label' => 'Follow', 
       'format' => 'raw', 
       'value'=>function ($data) { 
        return Html::a(Html::encode(Follow::find()->where(['user_id' => $data->id, 'follower_id' => Yii::$app->user->Id])->exists() ? 'Unfollow' : 'Follow'),'/site/follow/'.$data->id.'/'.$data->username); 
       }, 
      ],       
     ], 
     'summary'=>'', 
    ]); ?> 
<?php Pjax::end(); ?> 

答えて

0

からのコードです:これは、それがどのようにJavaScriptの作品だが、yii2問題ではありません

$('#form-pjax').on('pjax:success', function() { 
    /*call Your functions here, or copy from your generated page js code, 
    that bind event to pjax form, 
    at end of generated html You should have something like: */ 

jQuery(document).on('submit', "#form-pjax form[data-pjax]", function (event) { 
    jQuery.pjax.submit(event, '#form-pjax', {"push":true,"replace":false,"timeout":000,"scrollTo":false}); 
}); 

}); 

動的にコンテンツを追加すると、追加された要素ごとにトリガー/イベントをバインドする必要があります。まさにその内部に行くとどのようなコード

+0

、私はあなたのための答えを更新しpjax –

+0

を可能にし、現在任意のコードを持っていません。 –

+0

は動作しませんが、同じ動作をします。 pjaxは最初の検索では動作しますが、2回目の検索でページをリロードします –

関連する問題