Вызов функции jQuery внутри html возврата из вызова AJAX

Я работаю над веб-страницей, использующей jQuery. У меня есть вызов Ajax, который получает данные с сервера и обновляет div. Внутри этих данных есть функция jQuery, но функция не вызывается после загрузки данных на страницу. У меня уже есть соответствующие файлы js, включенные на страницу.

Вот что возвращается из вызова Ajax и помещается в div:

<script type = "text/javascript">
    $(function() {
         $('input').myFunction('param');             
    }); 
</script>
<p> other html </p>

Как мне запустить возвращенный javascript после того, как html будет вставлен на страницу?

(Я использую Rails с плагином jRails)

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
21
0
67 676
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Если вам нужна оценка тега JavaScript с содержимым html, вам следует установить для параметра dataType вызова ajax значение «html»:

$.ajax({
  type: "GET",
  url: "yourPage.htm",
  dataType: "html"
});

Или dataType «script», если вы хотите загрузить и выполнить файл .js:

$.ajax({
  type: "GET",
  url: "test.js",
  dataType: "script"
});

подробнее здесь: Ajax / jQuery.ajax

У меня была аналогичная проблема, когда я хотел добавить маленькие средства выбора даты jquery в пару полей, которые я получал через ajax. вот что я сделал, чтобы обойти это ... просто быстро и грязно. Вместо того, чтобы возвращать весь этот блок из моего вызова ajax:

<script type = "text/javascript">
    $(function() {
         $('input').myFunction('param');                         
    }); 
</script>
<p> other html </p>

Я бы вернул это (обратите внимание на составленный разделитель | x |)

    $(function() {
         $('input').myFunction('param');                         
    }); 

|x|

<p> other html </p>

Затем, когда я получил данные обратно через ajax, я разделил возвращаемое значение на 2 части: javascript для выполнения и html для отображения:

 r = returnvalfromajax.split("|x|");       
 document.getElementById('whatever').innerHTML = r[1];  
 eval(r[0]);

Вы пробовали метод Sys.WebForms.PageRequestManager.add_endRequest?

    $(document).ready(function()
    {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);           
    }
    );
    function endRequestHandler(sender, args)
    {
        // whatever
    }

Ну, вы можете использовать функцию jQuery load (): http://docs.jquery.com/Ajax/load#urldatacallback В качестве обратного вызова вы можете определить функцию, которая будет выполняться после загрузки нового контента. пример:

$ ("# каналов"). load ("new_content.html" ,, doSomething ());

а в new_content.html вы можете определить функцию doSomething () ...

для ajax.net решение endRequestHandler(sender, args) работает нормально, хотя

Изменение

<script type = "text/javascript">
...
</script>

К:

<script>
...
</script>

Исправлена ​​проблема для меня.

Другие вопросы по теме