1

サンプルをフォローしました。_PjaxLayout を追加しました。

<title>@ViewBag.Title</title>
@RenderBody()

私の_Layoutを変更しました:

    <div id="shell">
        @RenderBody()
    </div>
    <script type="text/javascript">
    $(function () {
        // pjax
        $.pjax.defaults.timeout = 5000;
        $('a').pjax('#shell');
    })
    </script>

更新された ViewStart:

  @{
  if (Request.Headers["X-PJAX"] != null) {
    Layout = "~/Views/Shared/_PjaxLayout.cshtml";
  } else {
    Layout = "~/Views/Shared/_Layout.cshtml";
  }
}

しかし、「a」タグをクリックするたびに、pjax コードが呼び出されません。pjaxをセットアップしたときにセレクターが機能していないようです。私は何を間違っていますか?

アップデート:

私がこれを行う場合:

        $('document').ready(function () {
        $('a').pjax({
            container: '#shell',
            timeout: 5000
        });
    });

pjax コードがヒットし、リクエスト ヘッダーが更新され、新しいコンテンツがページに読み込まれますが、スタイルとレイアウトがめちゃくちゃになって複製されます...

アップデート:

この異常事態が発生した後に DOM を調べると、新しいページ コンテンツが、ID #shell の要素ではなく、クリックしたアンカーに直接読み込まれていることがわかります。なんてこと?

4

2 に答える 2

0

PJax のドキュメントでは、その構文が有効であるとは見なされていません。

あなたは本当に意味がなかったの$(document).pjax('a',{});ですか?

$.pjax私が言えることからすぐに実行します。

于 2013-10-11T00:44:25.970 に答える