Eval скрипт asp.net в ответе html ajax - PullRequest
1 голос
/ 07 января 2010

Я использую панель обновления, в моем ответе есть какой-то JavaScript, как показано ниже. После успешного ответа мне нужно проверить его, загрузить (с помощью внешнего скрипта)

Пример: мой ответ HTML

<script type="text/javascript" src="test.js"></script>
<script type="text/javascript">
alert('asd');
</script>
<div>test</div>
<div>blah blah blah</div>

1 Ответ

5 голосов
/ 15 июня 2011

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

AJAX Framework не оценивает скрипты, которые возвращаются через вызовы UpdatePanel. Вы должны повторно прикрепить внешние скрипты к документу, чтобы браузер мог запросить их и оценить все встроенные скрипты. Вы можете использовать небольшой модуль, который я вставил ниже.

var UpdatePanelEnhancer = function ()
{
    var divSelector = '#liveArea';
    function evaluateScripts()
    {
        $(divSelector).find('script').each(function ()
        {
            if (this.src)
            {
                $('body').append(this);
            }
            else
            {
                var content = $(this).html();
                eval(content);
            }
        });
    };

    Sys.Application.add_load(evaluateScripts);
} ();

Слабая часть этого заключается в том, что вы должны предоставить селектор для элемента, где модуль должен искать скрипты для оценки (например, 'liveArea'), хотя вы можете расширить модуль и предоставить ему некоторую конфигурацию. Кроме того, я настоятельно рекомендую вам загружать внешние javascript-коды раньше. Если по какой-то причине вы не можете сделать это, вам следует дополнительно проверить, есть ли на скрипт уже ссылки, или нет, чтобы избежать необходимых вызовов и потенциально неожиданных действий и ошибок.

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