0

PagedListコンポーネントを使用してデータのページングを実行しているMVCビューがあります。これをサポートする私のJavaScriptは次のようになります。

$(function () {

    var getPage = function () {
        var $a = $(this);

        var options = {
            url: $a.attr("href"),
            type: "get"
        };

        $.ajax(options).done(function (data) {
            var target = $a.parents("div.pagedList").attr("data-ExchangeSite-target");
            data: $("form").serialize(),
            $(target).replaceWith(data);
        });

        return false;
    };

    $(".main-content").on("click", ".pagedList a", getPage);

});

私の.cshtmlファイルは、部分的に次のようになります。

    @model ExchangeSite.Entities.BicycleSearchSeller

    <div id="itemList">

        <div class="pagedList" data-ExchangeSite-target="#itemList">
            @Html.PagedListPager(Model.BicycleSellerListingList, pageNumber => Url.Action("Index", new {pageNumber}),
            PagedListRenderOptions.ClassicPlusFirstAndLast)
        </div>
   ...
   ...

IE9では、これは完全に機能します。特定のページ番号、または次/前のページをクリックすると、コントローラーに対して非同期呼び出しが行われ、データのリスト( "itemList")が更新されます。ただし、Chromeでは、コントローラーに対して2つの呼び出しが行われます。1つはAjax呼び出しであり、もう1つはそうではありません。Chromeでコントローラーに2回の呼び出しが行われる理由を誰かに教えてもらえますか?さらにコードを表示する必要がある場合は、お知らせください。

4

1 に答える 1

2

成功のコールバックにはバグのある行があるようです。

data: $("form").serialize(),

セミコロンではなくコンマで終了します。の後にコロンも含まれますdata。IEは、Google Chromeと比較して、壊れたJavaScriptに対してもう少し寛容である可能性があります。

于 2013-03-02T17:43:25.523 に答える