2009-05-12 2 views
3

주제가 그것입니다. 짧은 버전 : 첫 페이지로드시에만 강제로 페이지를 새로 고칠 수있는 방법이 필요합니다. asp.net에서 쉽게 될 것이지만, 나는 고전 asp에서 이것에 대해 어떻게 생각하는지 모른다.페이지로드 - 고전 ASP에서 강제로 새로 고침?

긴 버전 : 다소 큰 응용 프로그램을 업데이트하려고하는데, 로그인 할 때 아직 몇 가지 특정 단추를 누르거나 새로 고치지 않으면 세션에 필요한 정보가 저장되지 않습니다. 페이지 ... 고객이 페이지를 탐색하려고 할 때 문제가 발생합니다.

세션을 추적하고 수동으로 설정할 수는 있지만 몇 시간 동안은 실패했습니다. 강제 새로 고침이 훨씬 쉬울 것입니다. 초기 페이지로드를 감지 할 수있는 방법 만 있다면 루프를 발생시키지 않을 것입니다. 리디렉션은 문제가되지 않습니다. 응용 프로그램이 너무 많은 코드 (사실상 주석 처리되지 않고 정리되지 않은 코드)를 가지고 있기 때문에 실제로 모든 체크섬 체크섬을 실제로 구축하는 방법을 볼 수 있습니다.

편집 : 답장을 보내 주셔서 감사합니다. 그리고 늦은 대답에 대해 유감스럽게 생각합니다. 너희들에게서 좋은 아이디어가있어. 그 첫 번째로드 여부의 경우 : 세션 쿠키에 대한

답변

5
  1. 점검 (true = 이전 false = 첫 번째로드를로드 한) 말.

  2. a. false 인 경우 응답에 페이지를 다시로드 할 js를 추가하고 쿠키를 true
    으로 설정하십시오. b. true 인 경우 더 이상하지 마십시오. 페이지가 다시로드되었습니다.

사용자가 세션을 계속 업데이트하면이 작업은 즉시 첫 번째로드 다시로드 만 수행해야합니다.

편집 : 주석에 대한 응답으로 다음은 클라이언트 페이지를 다시로드하게하는 javascript의 예입니다. 지금까지 내가 아는 한,이 브라우저에 독립적이다.


<script type="text/javascript">window.reload();</script> 
(나는이 다소 해킹처럼 보인다는 것을 인정,하지만 작동거야을 할 다른 방법이있을 수 있습니다 페이지 재로드, 추가 javascript 명령을 보내지 않고도 Classic ASP에서 아무 것도 알지 못합니다.)

+2

안녕하세요, 선택한 답으로 입력하십시오. 처음에는 세션을 사용하지 않고 서버에 워크로드를 배치 했으므로이 페이지는 비교적 많은 사람들이 동시에 사용했습니다. 그러나 이것이 의심 할 여지없이 가장 쉬운 응답입니다. 나는 어쨌든 모든 브라우저/설정에서 작동하지 않을 수도있는 것을 충분히 경험하지 못했기 때문에 스크립트를 조금 두려워하며 페이지는 가능한 한 보편적으로 호환되어야합니다. – Zan

+0

은 모든 브라우저에서 작동합니다. 적어도 필자가 제시하지 않은 정보는 찾을 수 없었습니다. –

+0

알았어. 알았어. 감사. – Zan

1

쿼리 문자열 매개 변수가 'reloaded'== true 인 경우 문서 준비가 완료되면 문서를 jQuery에 window.location="currentUrl?reloaded=true"으로 다시로드하십시오. . 이 같은

뭔가 :

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

당신은 this 같은과 urlContainsReloadedIsTrue() 기능을 구축 할 수 있습니다.

2

사용해보십시오 다음과 같은 3 단계 :

  1. 숨겨진 텍스트 상자를 추가 폼 태그 안에 firstload을 불러
  2. 가 페이지에 자바 스크립트 방법을 추가 "true"로 기본 값을 설정 Window.Onload() 동안 실행.자바 스크립트 는 firstload 텍스트 상자 값을 확인 의 "참"은 상기 질의 문에 매개 변수를 추가로 페이지를 새로 고침 경우 (? = true로 리로드) 서버 측 코드
  3. , 만약 확인해야 재로드 된 쿼리 문자열은 사실입니다. 그럴 경우 첫 번째 값의 값을 "false"로 설정합니다.
2

그냥 페이지를 리다이렉트 한 후 앱에 새 페이지를 추가하십시오. 클라이언트가 login.asp에서 로그인 작업을 완료하면됩니다. VBScript를 사용 .. 간단한 스크립트로

<script type="text/javascript">window.location.href="home.asp"</script> 
2

을 login2.asp .. 설정 login2.asp 컨텐츠를 리디렉션합니다.

당신은 그 자체로 리디렉션하여 페이지를 다시로드하고 쿼리 문자열 변수를 사용할 수 있습니다 : 당신이에 대한 세션 변수를 설정하고 확인할 수 있습니다 대안으로

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

을 :

<% 
    If Session("reload") = "" Then 
    Session("reload") = "true" 
    Response.Redirect("samepage.asp") 
    End If 
%> 
1

몇 가지 알려지지 않은 이유로 인해 javascript가 작동하지 않는 문제가있었습니다. 결국이 간단한 코드 렛을 사용했습니다.

 
    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"변수를 명시 적으로 나타내지 만, 타임 아웃은 전체 세션 객체와 그 객체에 포함 된 변수에 대해 보편적입니다.

다시 보내 주시면 감사하겠습니다. 도움을 주셔서 감사합니다.

관련 문제