2015-08-28 2 views
0

Я перенаправляю страницу ASP.Net для загрузки страницы, и я использую ajax. Страница перенаправления работает, файл загружается и отображается страница с названием загрузки. Мне нужно вызвать javascript после загрузки файла, чтобы удалить экран ожидания.Javascript не работает на response.redirect с помощью ajax ASP.Net

Я сначала вызываю redirect, затем javascript, чтобы разблокировать интерфейс. для блокировки пользовательского интерфейса я делаю это, используя onclientclick = 'block()';

Response.Redirect("ExportFile.aspx, false); 
ScriptManager.RegisterClientScriptBlock((this), this.GetType(), "alertAction", "alert('');unblock();", true); 

Даже предупреждение не работает, поэтому JS не срабатывает вообще. Я устал помещать код на страницу загрузки файла, но это тоже не работает. Я даже пробовал тело onpageunload, но это никогда не срабатывает.

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

+0

Я не знаю, но если вы перенаправите пользователя, это необычный блок целиком на странице. –

+0

проблема разблокирована. Я называю jquery block Ui. делает страницу прозрачной черной. теперь мне нужно разблокировать его, но я не могу запустить JS. –

ответ

0

Как только response.redirect произойдет, другой код не может быть выполнен. Я бы предложил написать свой код перенаправления в javascript и поместить его в свой регистр RegisterClientScriptBlock. Просто убедитесь, что разблокировка находится перед окном.

ScriptManager.RegisterClientScriptBlock((this), this.GetType(), "alertAction", "unblock(); window.location.assign('yourPage.aspx');", true); 
+0

Я попытался, и это действительно работает, но код для разблокировки пожаров сначала, затем веб-страница запускает загрузку. Данные поступают из службы wcf, и это занимает около 20 секунд. Поскольку код разблокирования запущен, пользователь ничего не увидит, пока файл не будет готов. –

+0

Когда файл готов, вы можете отключить функцию javascript? Или использовать пользовательское событие? Затем вы можете просто установить прослушиватель, используя функцию «RegisterClienScriptBlock», и как только файл будет готов, он разблокирует страницу. – SeanKendle

+0

Я сделал на странице загрузку страницы экспорта после того, как служба WCF получила данные, однако эта страница исчезает после того, как данные готовы к сохранению и не запущено js. –

0

boruchsiper правильный. Кроме того, как только вы перенаправили их, вы находитесь на другой странице (если мое предположение верно, что вы перенаправляетесь на другую страницу). Вы хотели бы выстрелить эту линию после прибытия на новую страницу, так что вы хотите в коде этой страницы позади в Load() функции:

ScriptManager.RegisterClientScriptBlock((this), this.GetType(), "alertAction", "alert('');unblock();", true);

Вы можете захотеть включить в него строку запроса, что перенаправить URL-адрес, чтобы сообщить этой странице об этом.

+0

Я тоже пробовал, я также сменил диспетчер сценариев на сценарий запуска. даже Body = onunload не будет запускаться на странице экспорта. с страницы Переадресация на страницу файла загрузки, которая никогда не просматривается. по какой-то причине загрузить файл или экспортировать данные, вы должны перенаправить страницу –

Смежные вопросы