2016-08-11 11 views
1

Yii2アプリケーションでデータを表示するために、jquery PjaxでGridViewウィジェットを使用しています。私が見る、私は列または使用グリッドフィルタでグリッドをソートしたい場合はYii2 gridview - Ajaxリクエスト後の不要なページのリロード

Pjax::begin([ 
    'timeout' => 10000, 
    'id' => 'products-container', 
    'clientOptions' => [ 
     'type' => "POST", 
    ], 
]); 
?> 

<?= 
GridView::widget([ 
    //grid configuration 
]) 
?> 
<?php Pjax::end(); ?> 

:私は私のグリッドにAJAXソートやフィルタを持っている必要がありますので、私はコードのこれらの行の間に私のグリッド設定を入れていますブラウザはサーバーにajaxリクエストを送信しますが、ajaxを終了すると、ページ全体がリロードされます。

また、このコードをブラウザコンソールで実行しても、リクエストを送信した後にページがリロードされます。

$.pjax.reload("#products-container", { 
    "type": "POST" 
}); 

何が問題ですか?

更新:

私はこの問題は7に、サーバのPHPのバージョンをアップグレードしていることを発見しました!バージョンを5.6にダウングレードして問題を修正しました。しかし、メインサーバには最新版が必要ですので、PHP 7を使用する必要があります。pjaxとphp 7の問題は何ですか? 私のYiiバージョンは2.0.8

答えて

1

あるPjaxがあなたのページ全体をリロードする場合、それは二つの理由の1を意味します

  • あなたPjaxはエラー(ほとんどの場合、このいずれかを含んでおり、それはいくつかの並べ替えすることができ通常はException)。あなたのJSファイル(またはPJax終了イベントが行われているどこか)にイベントがあるかどうかをチェックするには、追加のイベントリスナーを記述します。たとえば、

あなたは、このイベントのトリガーがある場合、:あなたPjaxにエラーが含まれている場合今、あなたは確認することができ

$(document).on('pjax:error', function(event, xhr) { 
    alert('Pjax failed!'); 
    console.log(xhr.responseText); 
    event.preventDefault(); 
}); 

$(document).on('pjax:end', function(e) { 
    alert('Pjax has ended!'); 
}); 

を次に、あなたがこのようなものをも持つことができます。最初のアラートが表示され、2番目のアラートは表示されない場合、Pjaxエラーは発生しません。 の両方のアラートが表示された場合、レスポンスにエラーがあり、コンソールで何を取得できるかを確認できます。

  • あなたPjaxの応答が(<head><body>)コアのHTMLタグが含まれています。

これはエラーではありませんが、あなたはページを更新せずに応答を得るために期待している場合、ブラウザは理解していないが、そのため、完全に再ロードしようとします。コアHTMLタグを取得するのを防ぐ方法がわからないので、これは解決するのが難しいかもしれません。エラーの場合は、少なくとも何が間違っているか見ることができます。しかし、私が言ったように、これはおそらく最初のオプションです。

別の種類の結果に直面することはまずありません。この2つを確実に通過させることを強くお勧めします。

+0

ありがとうございました。テストしましたが、私はpjaxエラーがありません。どのように私は2番目の問題を解決することができます – hamed

+0

@hamedあなたの応答を確認してください。これについてコンソールが何を言いますか? –

+0

レスポンスは、headタグとbodyタグを含む完全なhtmlです。 – hamed

関連する問題