Загрузка страницы - принудительное обновление в классическом asp? - PullRequest
3 голосов
/ 12 мая 2009

Тема говорит это. Короткая версия: мне нужен способ принудительного обновления страницы только при первой загрузке страницы. Было бы легко в asp.net, но я не представляю, как это сделать в классическом asp.

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

Я МОЖЕТ отслеживать сеансы и устанавливать их вручную, но я потерпел неудачу в этом уже несколько часов, поэтому принудительное обновление будет намного проще. Если только есть способ обнаружить начальную загрузку страницы, чтобы я не вызывал цикл. О переадресации также не может быть и речи, поскольку в приложении слишком много кода (который практически не комментирован и не дезорганизован), чтобы я мог увидеть, как оно фактически строит все контрольные суммы проверки и т. Д.

Редактировать: Спасибо за ответы и извините за поздний ответ. Есть хорошие идеи от вас, ребята. :)

Ответы [ 6 ]

5 голосов
/ 12 мая 2009
  1. Проверьте наличие файла cookie сеанса, говорящего, является ли это первой загрузкой или нет (true = был загружен ранее, false = первая загрузка).

  2. а. Если false, добавьте js, который перезагрузит страницу к ответу, и установите для cookie значение true
    б. Если true, больше ничего не делайте. Страница была перезагружена.

Пока пользователь продолжает обновлять сеанс, это должно привести к мгновенной перезагрузке только первой загрузки.

РЕДАКТИРОВАТЬ: В ответ на комментарий ниже приведен пример JavaScript, который может привести к перезагрузке страницы клиента. Насколько я знаю, это не зависит от браузера:

<script type="text/javascript">window.reload();</script>

(Я признаю, что это похоже на взлом, но это сработает. Возможно, есть другой способ перезагрузить страницу, без отправки дополнительной команды javascript, но я не знаю любой в Classic ASP.)

2 голосов
/ 12 мая 2009

Использование VBScript.

Вы можете перезагрузить страницу, перенаправив ее на себя и используя переменную строки запроса :

<%
  Dim reload: reload = Request.Querystring("re") 
  If reload = "" Then
    Response.Redirect("samepage.asp?re=true")
  End If
%>

В качестве альтернативы вы можете установить переменную session и проверить это:

<%
  If Session("reload") = "" Then
    Session("reload") = "true"
    Response.Redirect("samepage.asp")
  End If
%>
2 голосов
/ 12 мая 2009

просто добавьте новую страницу в ваше приложение, после входа перенаправьте эту страницу ... я имею в виду, когда клиент завершит задание входа в login.asp. перенаправить login2.asp .. установить содержание login2.asp в простой скрипт ..

<script type="text/javascript">window.location.href="home.asp"</script>
2 голосов
/ 12 мая 2009

Попробуйте следующие 3 шага:

  1. Добавить скрытое текстовое поле с именем firstload внутри тега формы и установите его значение по умолчанию "true"
  2. Добавить метод javascript на страницу для выполнение во время Window.Onload (). JavaScript следует проверить значение firstload текстовое поле и, если "true", перезагрузите страницу с добавлением параметра в строку запроса (? reloaded = true)
  3. В код на стороне сервера, проверьте, является ли перезагрузка строки запроса истиной. Если это так, то установите значение firstload в значение «false».
1 голос
/ 25 мая 2009

У меня были проблемы с получением javascripts для работы по неизвестной причине, поэтому в конце я использовал этот простой кодлет:

    If session("Firstupdate") <> "updated" Then
        Response.AddHeader "Refresh", "0" 
        session("Firstupdate") = "updated"
    Else
        Response.AddHeader "Refresh", "" 
        Session.Contents.Remove("Firstupdate")
    End If

Это, кажется, не зависит от сценариев и работает достаточно хорошо для моих целей. В идеале удаление сеанса означает, что, хотя любые дополнительные обновления будут снова заставлять страницу проходить через 2 обновления, по крайней мере сервер не будет загружен бесполезными сеансами, когда в него вливается больше клиентов. Я бы предпочел установить 'Session.Timeout' для переменной «Firstupdate» явно, но, по-видимому, тайм-аут универсален для всего объекта сеанса и переменных, которые он содержит.

Опять же, извините за поздний ответ и спасибо за помощь.

1 голос
/ 12 мая 2009

Перезагрузите страницу с помощью window.location="currentUrl?reloaded=true" в jQuery для документа, готового, если, скажем, параметр строки запроса 'reloaded' == true.

Примерно так:

<script type="text/javascript">
    $(document).ready(function() {
        if(!urlContainsReloadedIsTrue())
            window.location="currentUrl?reloaded=true";
        });
    });
</script>

Вы можете создать функцию urlContainsReloadedIsTrue(), например, this .

...