음..아시는 분들도 계시리라 생각합니다만.. 제가 웹 프로그램을 하다 보니깐.. 이부분의 필요성은 언제라도 있더라구요..리프래쉬 없이 디비값을 가져오는 방법... 참고로 제가 만든 사이트에서 쇼핑존의 슬라이더 쇼핑~~ 하기 클릭해 보시면.. 카테고리 불러올때 아래 방식을 사용했습니다.(http://www.misozine.com) 머~~ 광고라고 하면 할말없고요..
개발자 분들 참고 하세요.. 마우스 오른쪽 클릭은 막아놨는데.. 그래도 웹좀 하신분들은 소스 어케 보는지 알겁니다..허허..
이 소스는 자바스크립트로 개체들을 찾아 가는게 핵심입니다..
아무쪼록 개발자 분들 힘내세요.. 우리나라 현실이 노가다 현실이라서리...쩌업~~
첫번째 프레임 페이지 입니다.
<frameset rows="100%,*" cols="*" framespacing="0" frameborder="NO" border="0">
<frame src="SlideShow.asp?<%IF Trim(request.querystring) = "" Then Response.Write(request.Form) ELSE Response.Write(request.QueryString)%>" name="mainFrame" >
<frame src="about:blank" scrolling="NO" noresize name="hiddenFrame" >
</frameset>
SlideShow.asp라는 파일에서 임의의 이벤트가 발생하면 이 파일의 특정 콤보에 값을 채우는 방법입니다
이 방식을 사용하면 새로고침의 한계를 뛰어 넘을 수 있습니다.
parent.document.frames['hiddenFrame'].document.location='top.asp?mode=CSSpec&ProductCode=' + document.frmSlide.ProductCode.value; 이런 방식으로 숨겨진 프레임 top.asp파일을 호출합니다. 이런식으로 사이트에 hidden 프레임을 만들어 두면 그렇게 멀게만 느껴졌던 디비호출을 마음대로 할 수 있습니다
=>Top.asp만 잘 정의 하면 대부분의 요청을 asp리프레쉬 없이 처리 할 수 있습니다.
// 여기는 Top.asp에 해당하는 내용입니다
mode에 따라서
<script language="javascript>
var TargetDoc= parent.document.frames["mainFrame"].document;
var oOption;
IF Request("mode") = "CSSpec" THEN
Set adocmd = Server.CreateObject("ADODB.Command")
WITH adocmd
.ActiveConnection = DbConn
.CommandType = adCmdStoredProc
.CommandText = "IS_CSEnterOrderCounts"
.Parameters.Refresh
.Parameters.Item("@ProductCode").Value= Cint(Request("ProductCode"))
Set RS = .Execute
END WITH
%>
for( key in TargetDoc.frmSlide.CSSpec)
{
TargetDoc.frmSlide.CSSpec.remove(key);
}
<%
Do While Not RS.EOF
%>
oOption = TargetDoc.createElement('OPTION');
oOption.value="<%=Trim(RS("ColorCode")) %>;<%=Trim(RS("SizeCode")) %>";
oOption.text ="<%=Trim(RS("Name") )%>-<%=Trim(RS("Size"))%>";
TargetDoc.frmSlide.CSSpec.add(oOption);
<%
RS.MoveNext
Loop
RS.close()
END IF%>
</script>