нежелательный множественный ajax-запрос к действию в asp.net mvc - PullRequest
0 голосов
/ 30 марта 2012

Я занимаюсь разработкой приложения asp.net mvc и на моей странице есть вызовы ajax.Вот форма, которую я загружаю с помощью ajax-вызова на страницу:

Форма расположена в частичном представлении

<div id="CreateCultureArea">
 <% 
        using (Ajax.BeginForm("CreateCulture", "Admin", new AjaxOptions() { OnSuccess = "handleCreateCulture" }))
        { %>
.....

<% } %>
</div>

Код обновлен

Следующий скрипт находится в виде:

<a href="#" class="CreateCulture" id="">Create Culture</a>

<script type="text/javascript">

        $('.CreateCulture').live('click', function (e) {
            e.preventDefault();
            var idval = this.id;
            $.ajax({
                url: "/Admin/CreateCulture",
                dataType: 'html',
                data: { id: idval },
                success: function (mydata) {

                    $("#CultureContentArea").empty();
                    $("#CultureContentArea").empty().hide().append(mydata).fadeIn(2000);

                    $("form").removeData("validator");
                    $("form").removeData("unobtrusiveValidation");
                    $.validator.unobtrusive.parse("form");

                },
                type: "GET"
            });
            return false;
        })
    </script>

Когда пользователи нажимают на ссылку с классом CreateCulture, форма загружается на страницу.Но, как я видел запросы в firebug, он вызывает действие несколько раз.Я читал похожие посты, такие как мой, на stackoverflow.com, и большинство из них предложили удалить повторяющиеся «jquery.unobtrusive-ajax.min.js» calss на странице, но, как я увидел страницу вывода, я вижу только ссылку на jquery.unobtrusive-ajax.min.js "скрипт.

Ответы [ 3 ]

3 голосов
/ 30 марта 2012

Проблема в том, что @Ajax.BeginForm испускает форму с атрибутом data-ajax="true".В ненавязчивом скрипте AJAX (см. Неминициализированную версию и ищите звонки на asyncRequest).Поэтому, вызывая $.ajax самостоятельно, вы повторяете работу @Ajax.BeginForm.Просто переведите вызов на $.ajax, и вы увидите, что ваше действие вызывается только один раз.

Если вам нужно предпринять действия после завершения вызова AJAX, установите свойство OnComplete в AjaxOptionsВаш звонок на Ajax.BeginForm.

0 голосов
/ 20 февраля 2013

Убедитесь, что у вас нет нескольких ссылок .js на странице

<script src='/Scripts/jquery.unobtrusive-ajax.min.js'></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
0 голосов
/ 30 марта 2012

Проблема заключалась в том, что я помещал некоторые скрипты в частичное представление, и каждый раз он дублировался при загрузке этого.Поэтому я поставил все сценарии на странице, и проблема решена.

...