Удалите загруженный контент ajax и script

Я не знаю, что это может быть дубликат, но

Я использую ajax на своем веб-сайте, теперь в ответ на этот вызов я отправляю некоторые html и script.

Затем я заменяю эти данные некоторым из моего элемента на странице.

Теперь, я хочу сделать второй вызов ajax, поэтому я удалил html-контент из загруженного div. Затем снова вызов ajax возвращает другой код html и script. Но несколько раз это конфликт между предыдущим script и вновь прибывшим script.

EX. 1-й ответ Я заменяю html и script на некоторый элемент: $('.ma_right_main').html(response.data);

то перед вторым вызовом я удаляю содержимое: $('.ma_right_main').html('');

2-й ответ Я заменяю html и script на некоторый элемент: $('.ma_right_main').html(response.data);

но после замены его второй раз script возвращается с первого раза все еще там в исполнении. Я хочу удалить его так же, как я могу удалить содержимое html.

Ответ 1

Я не думаю, что однажды браузер загрузил script, чтобы его можно было удалить (это не значит, что вы не можете удалить его из dom, но он все равно будет существовать.) Например, если вы a script с переменной x, загрузите страницу, чтобы загрузился script, удалите script из dom, x. Я думаю, что все еще будет определено.

Есть способы обойти это, хотя, если каждый динамически загруженный script был его собственным объектом, при "разгрузке" вы могли бы установить объект в null. Это решение, с которым я столкнулся некоторое время назад при поиске аналогичного решения.

Нашел ссылку, на которую я ссылался: fooobar.com/questions/531921/...

Ответ 2

Сценарии не выполняются естественным образом. (Настройка .innerHTML не будет выполнять скрипты внутри HTML).

jQuery вручную находит все элементы script в html, удаляет их и оценивает. Поэтому, если вы используете .html и не хотите, чтобы скрипты выполнялись, не включайте скрипты в html.

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