Как Показать/Скрыть Панели перед выполняющимся Ответом. Перенаправление

Попробуйте эту функцию:

function fetchRushIv(officeName){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('OG_Database');
  var data=sh.getRange(5,1,sh.getLastRow(),sh.getLastColumn()).getValues();
  var html=""; 
  for(var i=0;i";
      }
      html+="";
    }
  }
  html+="
"; return html; }

Это намного более простая версия вашего HTML. Получите это в первую очередь, и вы можете добавить остальные стили позже.



  
    
    
    
    
    
 
  
  

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

5
задан Jeeby 16 October 2008 в 11:53
поделиться

7 ответов

if (success)
                {
                    lblSuccessMessage.Text = _successMessage;
                    showMessage(true);                        
                }
                else
                {
                    lblSuccessMessage.Text = _failureMessage;
                    showMessage(false);
                }

                if(success) {
                    Threading.Thread.Sleep(200)
                    Response.Redirect(_downloadURL);
                }

Можно вынудить это ожидать, прежде чем это перенаправит путем создания сна потока.

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

if (success)
                {
                    lblSuccessMessage.Text = _successMessage + "<br /><INPUT TYPE='button' VALUE='Continue...' onClick='parent.location='" + _downloadURL + "'/>";
                    showMessage(true);                        
                }
                else
                {
                    lblSuccessMessage.Text = _failureMessage;
                    showMessage(false);
                }
-1
ответ дан 14 December 2019 в 19:30
поделиться

Вы наклоняетесь, потому что это действие происходит на сервере перед его переданным обратно клиенту. При попытке отправить файл пользователю, можно передать его потоком им использующий Ответ. Запишите (). Это сохранит их на текущей странице так, чтобы можно было показать им сообщение, и они получат подсказку загрузки.

буфер является массивом байтов файла

Response.AddHeader("Content-disposition", "attachment; filename=" & myUserFriendlyFileName)
Response.ContentType = "application/octet-stream"
Response.OutputStream.Write(buffer, 0, buffer.Length)
1
ответ дан 14 December 2019 в 19:30
поделиться

Вам нужен некоторый клиентский код, чтобы сделать перенаправление.

Мое предпочтение состояло бы в том, чтобы встроить некоторый JavaScript, чтобы сделать перенаправление.

Так, скройте форму, отобразите сообщение, и (на самом сыром уровне) используют элемент управления литерал для добавления некоторого текста как это к странице.

<script>
    location.href = "http://otherServerName/fileToDownload";
</script>

Можно найти, что это перенаправление происходит, прежде чем страница имела изменение в дисплее - в этом случае, попробуйте это в теге основного текста HTML (отметьте различные типы кавычек):

<body onload='location.href="http://otherServerName/fileToDownload";'>

Помните, что каждое сообщение назад на самом деле подает новую страницу клиенту, не просто изменив некоторые свойства на текущей странице (даже если ASP.NET очень старается притвориться, что это точно так же, как форма окон),

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

Править: если они отключили JavaScript, Вы могли бы просто предоставить ссылку для загрузки файла.

2
ответ дан 14 December 2019 в 19:30
поделиться

Скройте его клиентский с JavaScript и затем сделайте перенаправление или сделайте две обратных передачи: первая обратная передача, которая скроет форму и покажет слова благодарности и второе, чтобы сделать перенаправление однажды слова благодарности, была представлена на экран.

Или, Вы могли сделать JavaScript window.open вместо перенаправления, которое указывает месту назначения после обратной передачи, и сокрытие формы завершается.

1
ответ дан 14 December 2019 в 19:30
поделиться

Непосредственно в asp.net Вы наклоняетесь, делают это, но путь вокруг состоит в том, чтобы или использовать JS (как отправляется на здесь), или можно использовать IFrame, который загружает файл, который будет загружен - пользователь будет видеть слова благодарности, затем Открываться/сохранять диалог...

1
ответ дан 14 December 2019 в 19:30
поделиться

Возможно, отправляя Заголовок Перенаправления вручную, со многими секундами для ожидания путь состоит в том, чтобы пойти для Вас?

Response.AddHeader("Redirect", "3; URL=" + _downloadURL")

Править

После чтения Вашего вопроса снова, я, возможно, неправильно понял Вас немного.

Вы, кажется, хотите задержать целый процесс так, чтобы панель "Thank You" могла быть отображена. Это оставляет Вас двумя возможностями:

  • Любой Вы полагаетесь на JavaScript, чтобы отобразить панель и задержать форму POST. Сервер может затем сразу перенаправить с Response.Redirect(). Это - более современный способ сделать это.
  • Или Вы хотите быть полностью независимыми от JavaScript. В этом случае необходимо заставить сервер отобразить промежуточную страницу "Thank You, click here to go on" на форму POST и использовать метод заголовка Перенаправления через Response.AddHeader() заставить ту страницу уйти автоматически. Это немного старомодно, но надежно.

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

1
ответ дан 14 December 2019 в 19:30
поделиться

Я закончил тем, что делал предложение abrudtkuh, просто добавив ссылку к сообщению успеха... я также реализую перенаправление JavaScript для автоматического запуска загрузки, но я не хотел полагаться только на JavaScript, следовательно кнопка, отображаемая страницей.

Спасибо за подсказки все - Вы все качаетесь!

аплодисменты greg

0
ответ дан 14 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: