문제

서버 측에서 jQuery Thickbox를 닫는 방법 - 서버의 선에서 두꺼운 상자 (프레임 스타일)가 닫히게하고 싶습니다 - 작업이 완료되면 등.

두꺼운 박스를 사용하여 파일 업로드 대화 상자를 표시하고 업로드가 완료되면 서버의 코드에서 Deickbox를 기각하고 싶습니다 ( 'Close'또는 ESC 키와 마찬가지로).

또한 REPONTER.REDIPERECT DeCHOUTBOX에서 열립니다. 어떻게 모든 것을 새 페이지로 리디렉션 할 수 있습니까?

도움이 되었습니까?

해결책

비슷한 질문을 게시하려고 했고이 스레드를 발견하여 추가했다고 생각했습니다. 세부 사항은 다음과 같습니다.

내 마스터 페이지에서 두꺼운 상자를 트리거하는 다음 링크를 받았습니다.

<a runat="server" href="~/users/login.aspx?TB_iframe=true&height=160&width=260" class="thickbox">login</a>

이것은 내 로그인에 대한 HTML입니다

<div runat="server" id="divAuthenticate" style="margin: 0px 10px 0px 10px;">
  <div class="row">
  <asp:label runat="server" associatedcontrolid="txtUserEmailAddress" text="Email Address"/>
  <asp:textbox runat="server" id="txtUserEmailAddress" cssclass="defaultTxt" width="260px" />
  </div>
  <div class="row">
  <asp:label runat="server" associatedcontrolid="txtUserPassword" text="Password" />
  <asp:textbox runat="server" id="txtUserPassword" cssclass="defaultTxt" width="260px" />
  </div>
  <div class="row">
  <asp:label id="lblMsg" runat="server" forecolor="Red" />
  </div>
  <div class="row" style="text-align:right;">
  <asp:button runat="server" id="cmdLogin" cssclass="button" text="login" />
  </div>
</div>

  <div id="divContinue" style="margin: 40px;" runat="server" visible="false">
  <asp:button runat="server" id="cmdContinue" cssclass="button" text="Continue..." onclientclick="self.parent.tb_remove();self.parent.location.reload(true);"  />
  </div>

내 로그인의 뒤에있는 코드는 다음과 같습니다.

    Protected Sub cmdLogin_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdLogin.Click

    If users.authenticate(txtUserEmailAddress.Text, txtUserPassword.Text) = sqlHelpers.userCommand.success Then

        'store the username so that next time around we can load it to the username textbox
        Dim cookie As New HttpCookie("username")
        cookie.Values.Add("userName", txtUserEmailAddress.Text)
        cookie.Expires = DateTime.Now.AddDays(5)
        Response.Cookies.Add(cookie)

        FormsAuthentication.SetAuthCookie(txtUserEmailAddress.Text, True)

        divAuthenticate.Visible = False
        divContinue.Visible = True

    Else
        lblMsg.Text = "invalid username or password!"

    End If
End Sub

따라서 사용자가 성공적으로 인증 할 때 나는 단순히 하나의 div를 숨기고 다른 div를 보여줍니다. 다른 하나는 계속해서 버튼을 포함하여 두꺼운 상자를 닫고 부모를 다시로드합니다. 이제 이것은 최상의 솔루션이 아니지만 성공적인 작업 제출시 Deichbox의 자동 폐쇄를 트리거 할 수있는 일부 코드를 제공 할 수 있기를 바랍니다.

다른 팁

케이, 나중에 무슨 일이야? 나는 그 의견에 대한 응답을 기다리는 것을 귀찮게하지 않을 것입니다.

이 문제에 대한 마법의 해결책은 없습니다. 코드 스 니펫으로 충분하지 않습니다. 이 질문은 순전히 개념적이며 배울 수있는 개념이 남아 있습니다.

여기서 개념은 JavaScript 및 서버 측 코딩이 함께 작동하는 방법입니다. 그것들은 두 가지 다른 생물이며 서버 측에서 클라이언트 측 작업을 수행하는 것은 작동하지 않습니다.

이 문제에는 여러 가지 접근 방식이 있습니다. (세부 사항이 없기 때문에) 두꺼비에 양식이 제출되면 Thickbox를 닫으려고한다고 가정 해 봅시다. 그럴 수 있지. 내 접근 방식은 a를 만드는 것입니다 close_this_thickbox() 함수, 내 .js 파일에 누워 있으면 양식이 제출되면 결과 페이지 인쇄를하도록하십시오. <script>close_this_thickbox()</script>.

(최종 사용자를위한 클리너 솔루션은 Ajax를 통해 양식을 제출 한 다음 close_this_thickbox 콜백으로서, 그러나 그것은이 토론에서 약간 화려하게 들립니다.)

위의 개념이 유사한 접근법은 IS입니다 그만큼 원하는 효과를 얻는 유일한 방법. 클라이언트 측 코드를 생성 한 다음 서버 측에 해당 코드의 호출을 인쇄하도록해야합니다.

서버 측 리디렉션은 전체 창에 적용되면 다시 동일한 접근 방식 없이는 발생할 수 없습니다. 내장 서버 측 리디렉션 메소드를 사용하는 대신 ~ 해야 하다 원하는 효과를 초래하는 스크립트를 호출하십시오. <script>top.location = 'http://example.com'</script>. 서버 측 솔루션이 불가능합니다.

이 개념을 성공적으로 적용하고 웹 개발 여정에서 행운을 빕니다. 설명이 필요한 것이 있습니까?

당신이 정확히 묻는 것을 이해한다면 ...

서버 측에서 JavaScript와 상호 작용할 수 없습니다. 두 사람은 서로 독립적입니다. 서버에서 무엇을하든 이미 렌더링 된 JavaScript는 변경되지 않습니다. 페이지가로드되면 닫히도록 '닫기'하시겠습니까? 그러나 이미로드 된 경우 서버에서 아무것도 닫을 수 없습니다.

둘째, ASP가있는 서버에서 ResponseRect를 사용하고 JavaScript에서 호출되는 경우 AJAX 요청 내에서 컨텐츠를 리디렉션하는 경우가 있습니다. 현재 스크립트를 변경하려면 클라이언트 측에서 다시로드해야합니다.

내가 잘못 가정하면 나를 수정 해주세요.

이것이 당신이 필요한 것입니까?

OnClick="self.parent.tb_remove();self.parent.location.href = 'Checkout.aspx';"

비슷한 일을하고 있다고 생각합니다. 체크 아웃 버튼은 두꺼비에 있습니다. 체크 아웃을 클릭하면 checkout.aspx로 리디렉션

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top