Загружается новый Javascript, но вызывается старый Javascript. MVC

0

У меня есть 3 частичных представления с JS, использующих JQuery в каждом, чтобы опубликовать форму и открыть новое частичное представление при отправке формы.

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

Код:

    $('#selector').click(function (e) {
    var actionName = $(this).attr("id")
    e.preventDefault();
    e.stopImmediatePropagation();
    alert("page1 js being called")
    $('#page1Form').submit(function () {
        $.ajax({
            url: 'Dashboard/Page1/',
            data: $(this).serialize(),
            type: 'POST',
            success: function () {
                $.ajax({
                    url: 'Dashboard/LoadPartial',
                    data: { viewName: actionName },
                    type: 'GET',
                    success: function (d) {
                        $('#partial').html(d);
                    }
                });
            },
        });
    });
    $('#page1Form').submit();
});

Второй частичный вид имеет такую же функцию, но только с соответствующими селекторами и т.д., И по какой-то причине предыдущие страницы JS вызывается как alert("page1 js being called") появляется в браузере!

Заранее спасибо.

Показать ещё 1 комментарий
Теги:
model-view-controller
partial-views

1 ответ

1

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

$.ajax({
    url: 'Dashboard/LoadPartial',
    data: {
        viewName: actionName
    },
    type: 'GET',
    success: function (d) {
        $('#selector').off('click'); // remove the click event handler
        $('#page1Form').off('submit'); // remove the submit event handler
        $('#partial').html(d); // add your new content
    }
});
  • 1
    И оцените ajaxed javascript как-нибудь, чтобы он был исполняемым.
  • 0
    Таким образом, # selector.click () обычно является просто навигационной ссылкой, но на этих страницах она изменяется так, что форма может быть отправлена, а затем происходит навигация. Однако, если я в представлении, где # selector.click () должен вести себя как обычно, он все равно пытается выполнить функцию последнего поста и перейти на страницу. Я сделал .off на обработчике кликов, как указано выше, но, похоже, не влияет за пределами этих 3 формы сообщения и навигации по страницам

Ещё вопросы

Сообщество Overcoder
Наверх
Меню