Похоже, что присвоение свойства innerHtml не будет запускать выполнение JS. Если вы часто используете этот шаблон, вы можете определить некоторую функцию по соглашению, например, ajaxCallbackControlName, где ControlName - это имя вашего текущего элемента управления. Затем оберните предупреждение в эту функцию и вызовите функцию в том месте, где вызывается предупреждение. Таким образом, элемент управления будет работать одинаково при нормальной загрузке (не через службу). С другой стороны, в функции успеха для службы вы должны вызывать эту функцию следующим образом:
window["ajaxCallback" + controlName]();
(см. Как выполнить функцию JavaScript, когда у меня есть имя в виде строки для получения более подробной информации)
Однако при таком подходе у вас будут проблемы, если на странице будет несколько экземпляров одного и того же элемента управления, поскольку все они будут запущены. Вы можете работать в этом направлении, добавив случайную строку в качестве параметра к службе и добавив ее к имени функции.
Все это является универсальным решением, которое должно работать для любого элемента управления и с любым кодом js, но на практике вам может потребоваться более конкретное решение, например загрузка функций обратного вызова в файл JS и создание специальных функций для загрузки определенного элемента управления через сервис. Затем вы можете вызвать нужную функцию обратного вызова после установки свойства innerHtml.
Edit:
Кажется, что установка innerHTML не будет определять функции. Таким образом, вы должны проверить код самостоятельно. Вот простой пример только на стороне клиента.
<html>
<body>
test
<br />
<div id="testDiv"></div>
<br />
<input type="button" onclick="insert()" value="Insert" />
<script type="text/javascript">
function insert(){
var element = document.getElementById("testDiv");
element.innerHTML = "test innerHTML <script id='loadScript' type='text/javascript'> function foo() {alert('test'); } <\/script> ";
eval(document.getElementById("loadScript").innerHTML);
foo();
}
</script>
</body>
</html>
Другим подходом было бы выбрать все элементы скрипта, например, через JQuery и оценить их содержимое. Также стоит проверить, есть ли в JQuery API какая-либо функция для установки HTML и выполнения сценариев.
Редактировать 2: Как кажется, функция JQuery html () имеет именно такое поведение. Если вы используете JQuery, вы можете изменить функцию успеха следующим образом:
function Success(result) {
$("Icerik").html(result);
}