asp.net получает доступ к переменным javascript после ajax updatepanel - PullRequest
0 голосов
/ 31 мая 2011

Я использую AJAX в веб-проекте ASP.NET для обновления страницы. Некоторые из моих функций возвращают XML, который я хочу встроить в страницу после ее перезагрузки. Эта часть работает, вот пример того, как это выглядит вверху страницы:

var productXML = "<?xml version=\"1.0\"?><ArrayOfProduct xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><Product><ActualProdID>123</ActualProdID><Name>Test</Name><Description>Test</Description><Edition>Test</Edition><Platform>Test</Platform><Family>Test</Family><Type>Test</Type><DeploymentTypes>Test</DeploymentTypes><BaseActualProdID>Test</BaseActualProdID><Price>0</Price></Product></ArrayOfProduct>";

Позже на странице я пытаюсь использовать XML, но он не работает. Я попытался сделать что-то простое и просто добавить окно с предупреждением, которое выглядит так:

<script type="text/javascript">
function closeLoading()
{
    jQuery('.pleaseWaitPanel').css({ 'display': 'none', 'visibility': 'hidden' });
    alert("here");
    alert(productXML);
    alert("here2");
}
</script>

closeLoading () вызывается внутри:

window.onload = function () { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading); };

Он загружает jQuery, и первое предупреждение «здесь» работает отлично. Когда я иду, чтобы предупредить productXML, ничего не происходит. Это не выдает ошибку JavaScript, я использую Firebug. Я могу подтвердить, что XML находится на странице.

Любая помощь по этому вопросу будет принята с благодарностью !!

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Из ваших фрагментов кода похоже, что ваша closeLoading функция вызывается только в вашей window.onload функции.Это означает, что не будет вызываться после завершения любого запроса Ajax, поскольку окно не будет перезагружено.

Я бы попытался переместить ваш вызов на Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading) непосредственно перед закрытиемтег формы на стороне сервера:

<form runat="server">
    ...
    <script>
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading);
    </script>
</form>

Надеюсь, это поможет.

0 голосов
/ 31 мая 2011
var productXML 

Является переменной ServerSide, поэтому у вас нет доступа к ней в клиентском скрипте.

Если вы хотите использовать функцию JavaScript, вы можете сделать это:

1) Поместите результат в скрытое текстовое поле, например

<input type='hidden' value='<%=productXML%>'> 

тогда просто получите значение текстового поля.

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