Функция JQuery .replaceWith предоставляет только необработанный HTML - PullRequest
0 голосов
/ 07 октября 2018

У меня небольшая проблема с моим ajax ответом, который возвращает raw html, а сценарий не выполняется, поэтому raw html предоставляется без jquery ui выполненных сценариев.

Вот подробности:


В настоящее время я нахожусь на ASP.NET MVC, я хотел бы связаться с
сервером, чтобы получить данные куда-нибудь и вернуться с точки зрения объекта.

Razor, способный обрабатыватьмодель и отображение данных для меня.

Мне нужен jquery для функциональности tab, полезной для организации данных.


Проблема

Прежде чем я вызову ответ ajax, jquery отлично работает, как показано на рисунке ниже:

enter image description here

Я могу получить доступ к каждой вкладке, щелкнув заголовок, и это предоставляет разные детали.Это на 100% скопировано из официальной документации jquery для вкладок, как показано здесь

Когда я нажимаю кнопку отправки, она вызывает get request на сервер и обрабатывает данные.Теперь я могу обновить детали на основе более новых данных.Но когда я пытаюсь щелкнуть «Отправить», он возвращает следующее:

enter image description here

Как видно из рисунка, он сломал скрипт jquery и, следовательно, просто показал, что находится внутри html-кода.

Я могу заверить, что проблема не в jquery, поскольку я протестировал отображение формы при нажатии, как показано здесь.Обратите внимание, что приведенный ниже код не отражает изображение выше, как прежде, чем нажать normal response, он не будет отображать детали, подобные первому изображению.

string disp = "none";
if (ViewBag.Message == "AJAX")
{
    disp = "block";
}

<div id="timetableList" style="display: @disp">

Это означает, что обновлены новые данные.Так что проблема не в jquery.ajax сделал, чтобы заменить div от старых данных на новые, как показано здесь:

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-otf-target"));
        var $newHtml = $(data);
        $target.replaceWith($newHtml);
        $newHtml.effect("highlight");           
    });

    return false;
};

Здесь .done(function (data)), переданные данные - это новый HTML, который был обновлен, я проверилво время отладки:

enter image description here

"\r\n<div id=\"timetableList\">\r\n <ul>\r\n <li><a href=\"#tabs-1\">Nunc tincidunt</a></li>\r\n <li><a href=\"#tabs-2\">Proin dolor</a></li>\r\n <li><a href=\"#tabs-3\">Aenean lacinia</a></li>\r\n </ul>\r\n ......

Можно сказать, что ajax заменит данные новым html, но не выполнит jquqry, как показано выше,Есть ли способ, чтобы он load scripts, чтобы можно было показать результат, как ожидалось.

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

1 Ответ

0 голосов
/ 07 октября 2018

Эй, вы можете просто вызвать метод tabs в функции ответа ajax сразу после метода replaceWith.что-то

$ ("идентификатор элемента ваших вкладок"). tabs ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...