11

I have a rails app and I keep getting a weird behavior with pjax requests. When I look into my development logs I could see that two requests are being made. The first request is pjax and the next one is not. As a result the page still reloads.

I appreciate if anyone could help me with this.

4

2 に答える 2

13

JQuery pjax プラグインにはデフォルトのエラー ハンドラーがあり、ターゲット ページをリロードするだけです。このエラー ハンドラは、pjax が非常に低く設定するタイムアウトが経過したときに呼び出されます。その結果、リクエストに時間がかかりすぎると、2 つの同一のリクエストが表示されます。pjax リクエスト (おそらく _pjax 属性が設定されている) の後に、pjax 以外の別のリクエストが続きます。ブラウザーでは、ページ全体がリロードされる可能性があります。

私の状況でわかったことの 1 つは、応答自体にそれほど時間がかからなかったことです。ただし、返された HTML には Flash 埋め込みが含まれていました。pjax コードが応答を受け取るのは、Flash 埋め込みが読み込まれる前か後かはわかりません。

この問題を解決するために、PJax コードを次のように変更しました...

$.pjax({
        url: xhr.getResponseHeader('Location'),
        container: '#container',
        timeout: 4000 // pick a suitable timeout
      });

もちろん、これは pjax を直接呼び出しています。直接呼び出していない場合は、同様の解決策を見つける必要があります。

于 2011-12-12T17:57:54.780 に答える
1

私もこの問題に遭遇しました - ブラウザのキャッシュに関連する問題のようです。履歴とキャッシュをクリアすると、Chrome で発生しなくなることに気付きました。まだ解決できていませんが、ブラウザのキャッシュを無効にすることと関係があると思いますか?

于 2011-12-07T21:23:29.843 に答える