2

フォームの送信時に ajax リクエストを送信するコードがいくつかあります。これは、フォームが初めて送信されたとき (検索モジュール) に機能しますが、1 回だけです。データが返されたときにテーブルを強調表示する効果を追加しました。これは 1 回しか表示されません (データも 1 回だけ変更されます)。

Chrome 開発ツールで応答を見ると、新しい検索クエリのデータが含まれていることがわかりますが、これは表示されていません。結果を一度しか表示できないのはなぜですか?

JS:

$(function () {
// Creates an ajax request upon search form submit
 var ajaxFormSubmit = function () {
    var $form = $(this);

    var options = {
        url: $form.attr("action"),
        type: $form.attr("method"),
        data: $form.serialize()
    };

    $.ajax(options).done(function (data) {
        var $target = $($form.attr("data-nn-target"));
        var $newHtml = $(data);
        $target.replaceWith($newHtml);
        $newHtml.effect("highlight");
    });

    // Prevent default action
    return false;
 };

 $("form[data-nn-ajax='true']").submit(ajaxFormSubmit);
});

HTML:

<form method="GET" action="@Url.Action("Index", "Show")" data-nn-ajax="true" data-nn-target="#contentlist" class="form-search">
    <div class="input-append mysearch">
        <input type="search" class="span5 search-query" name="query" data-nn-autocomplete="@Url.Action("AutoComplete")" />
        <input type="submit" class="btn" value="Search" />
    </div>
</form>

<div id="contentlist">
    @Html.Partial("_Shows", Model)
</div>
4

2 に答える 2

4

html()メソッドの代わりに使用する必要があると思いますreplaceWith()

$target.html($newHtml);
于 2013-06-28T14:03:00.133 に答える
2

ただのアイデア...試してみてください

$target.html(data);

それ以外の

$target.replaceWith($newHtml);

replaceWith を使用すると、コンテンツを入力する div を実際に削除できます。その後、2 回目は、コンテンツを挿入する div が見つかりません。

于 2013-06-28T14:03:31.510 に答える