2009. 11. 23. 15:06

글목록이 나와있는 상태에서 제목을 누르면..

보기 페이지로 넘어가는 게 아니라.. 제목 바로 아래쪽에 컨텐츠 내용이 나오는 스타일입니다.

아주 많이 쓰이지는 않지만..가끔씩 쓸 때가 있죠..

 

번호                        제목                         작성일

  1                 제목이랍니다.                    2006.11.24

--------------------------------------------------

내용입니다.                                                             -->초기상태는 안보이다가 제목을 클릭시

내용입니다.                                                                  아래쪽에 내용이 이렇게 보이는형태

  2                제목2..                               2006.11.24

 

그런데..보통 이렇게 하려면 처음에 제목뿐만 아니라 내용까지 다 불러와서

내용을 레이어형식으로 감춰두었다가 나타내는 것 뿐이죠..

그래서 리스트목록이 많을경우에는 페이지에 부하가 걸리지 않을까 라는 생각에..

 

초기에는 내용을 불러오지 않고 제목을 클릭시 그 순간에 해당 내용만을 불러올 수는 없을까해서

만든거랍니다. 서론이 길다..

 

XMLHTTP를 이용했습니다.

일단 한글을 이용하기 위해서 <% session.codepage = 949 %> 를 써줘야 됩니다.

<tr>
<td>1 </td>
<td> <a href="#" onClick="fn_view(<%=list_loop%>);">제목1</a></td> -->list_loop는 목록순서
<td>2006-11-24</td>
</tr>
<tr><td colspan="4" style="padding:2px 10px"><div id="td_<%=list_loop%>"></div></td></tr>

--> 바로 이 부분에 내용이 들어갑니다. 초기상태는 보이지 않습니다.

 

<% data_num=1 %>

 

<SCRIPT LANGUAGE="JavaScript">
<!--
 function fn_view(target, idx) {
  //컨텐츠와 추천수, 조회수를 변경해준다.
  var data_num=<%=data_num%>; -->몇 개의 목록이 들어가있나
  
  var oXMLHTTP=new ActiveXObject("Microsoft.XMLHTTP")

  var sUrl="test_action.asp;//처리페이지

  oXMLHTTP.open("GET", sUrl, false);
  oXMLHTTP.send();

  var Talk_Content=oXMLHTTP.responseText; //처리페이지에서 내용을 받아옵니다

  eval("document.all.td_"+target+".innerHTML=Talk_Content"); -->해당 줄에 내용을 삽입합니다

//이 부분은 곁다리로..각 줄 열고 닫기  

for (var i=0;i<data_num;i++) {
   if (target==i) {
    if(eval("document.all.td_"+i+".style.display")=='block')
     eval("document.all.td_"+i+".style.display='none'");
    else
     eval("document.all.td_"+i+".style.display='block'");
   } else
    eval("document.all.td_"+i+".style.display='none'");
  }
 }
//-->
</SCRIPT>

 

//test_action.asp -->처리페이지

//한글깨짐방지 코드

<% session.codepage = 65001 %>
<% Response.CharSet = "UTF-8" %>
<meta http-equiv = "Content-Type" content = "text/html;charset=UTF-8">
<%
 view_sql="select content from Board where idx=1
 
 set viewRs=dbconn.execute(view_sql)

 

 if not viewRs.eof then
     talk_content=output_replace(viewRs(0),1)
 end if


 Response.Write talk_content
%>


홈페이지제작 홈페이지제작문의 회사홈페이지제작 쇼핑몰제작 쇼핑몰구축 폐쇄몰 복지몰 몰인몰 효과음 pop시스템 pos시스템 mes crm erp erp컨설턴트 scm me2day 물류프로그램 서버구입 홈페이지빌더 효과음 복지몰 erp프로그램 파워빌더 erp컨설턴트 일본구매대행 부동산119 제로옥션 동영상강의제작 홈페이지계약서 홈페이지제작추천 salesforceautomation 그룹웨어 아이템거래 아이템거래사이트 구직사이트 웹호스팅 웹호스팅비용 바코드시스템 온라인마케팅 IT컨설팅 웹에이전시 ToT 홈페이지제작 홈페이지제작문의 회사홈페이지제작 쇼핑몰제작 쇼핑몰구축 폐쇄몰 복지몰 몰인몰 효과음 pop시스템 pos시스템 mes crm erp erp컨설턴트 scm me2day 물류프로그램 서버구입 홈페이지빌더 효과음 복지몰 erp프로그램 파워빌더 erp컨설턴트 일본구매대행 부동산119 제로옥션 동영상강의제작 홈페이지계약서 홈페이지제작추천 salesforceautomation 그룹웨어 아이템거래 아이템거래사이트 구직사이트 웹호스팅 웹호스팅비용 바코드시스템 온라인마케팅 IT컨설팅 웹에이전시 ToTb
홈페이지제작 홈페이지제작문의 회사홈페이지제작 쇼핑몰제작 쇼핑몰구축 폐쇄몰 복지몰 몰인몰 효과음 pop시스템 pos시스템 mes crm erp erp컨설턴트 scm me2day 물류프로그램 서버구입 홈페이지빌더 효과음 복지몰 erp프로그램 파워빌더 erp컨설턴트 일본구매대행 부동산119 제로옥션 동영상강의제작 홈페이지계약서 홈페이지제작추천 salesforceautomation 그룹웨어 아이템거래 아이템거래사이트 구직사이트 웹호스팅 웹호스팅비용 바코드시스템 온라인마케팅 IT컨설팅 웹에이전시 ToTb

'Website 세상 > Web Program' 카테고리의 다른 글

asp 에서 오라클 연결  (0) 2009.11.23
HTML DOM Table Object  (0) 2009.11.23
[Ajax] xmlhttp를 이용한 동적 셀렉트박스  (0) 2009.11.23
lytebox ie8 관련  (0) 2009.11.23
[JavaScript] 팝업 띄울때 줌효과 나타내기  (0) 2009.11.23
Posted by ToTb
2009. 11. 23. 15:03

준비물: 셀렉트박스 2개..

예시: 셀렉트박스1을 클릭했을때 xmlhttp를 이용하여 db에서 Option값을 가져와서 셀렉트박스2의 옵션값에 추가시킨다.

 test.asp//////////////////////////////////////////

<html>
<body>
<form name="frm_sel" >

'셀렉트박스1
<select id="sel_type1" onChange="fn_data_change(document.frm_sel);">
<option>선택해주세요</option>
<%

'셀렉트박스1은 직접 DB에서 가져온다..
mem_sql="select top 10 idx, ust_name from member order by idx desc "

set mem_rs=dbconn.execute(mem_sql)

do until mem_rs.eof
 idx=mem_rs("idx")
 ust_name=mem_rs("ust_name")
%>
 <option value="<%=idx%>"><%=ust_name%></option>
<%
mem_rs.movenext
loop

mem_rs.close
set mem_rs=nothing
%>
</select>

'셀렉트박스2
<select id="sel_type2">
<option>선택해주세요</option>
</select>
</form>


<SCRIPT LANGUAGE="JavaScript">
<!--
 function fn_data_change(obj) {
var row_num=obj.sel_type2.length-1; //기본(선택해주세요)는 제외하고 계산

 

//셀레트박스1에서 다시 선택했을 경우..셀렉트박스2의 기존 옵션값들은 삭제한다.

if (row_num != 0) {
   var x=document.getElementById("sel_type2")
   for (var k=1;k<=row_num;k++) {

   //이부분 때문에 시간이 많이 걸렸다.. 

   //처음에는 x.remove(k)로 처리했는데..계속 값이 삭제되지 않고 남아있는 것이었다.

   //왜 그러지 왜 그러지 하면서..값을 계속 확인해보면서.. 1시간 정도는 헤맸다..-_-;;

   //결론은 첫번째 값을 삭제하면 그 뒤의 값은 하나씩 땡겨지므로.. 

   // 1만 적으면 되는거였다. orz

   //x.remove(option순서);
    x.remove(1);    
   }
  }   

 

  var sel_value=obj.sel_type1[obj.sel_type1.selectedIndex].value;

  var oXMLHTTP=new ActiveXObject("Microsoft.XMLHTTP")
  var sUrl="xhp_test.asp?sel_value="+sel_value;

  oXMLHTTP.open("GET", sUrl, false);
  oXMLHTTP.send();

  inner_value=oXMLHTTP.responseText.split(";");

 

  for (var i=0;i<inner_value.length;i++) {
   var obj_node=document.createElement("option"); //option 객체를 생성
   document.frm_sel.sel_type2.appendChild(obj_node);
   
   option_value=inner_value[i].split("/"); //텍스트와 값 구분

   obj_node.innerText=option_value[0];
   obj_node.value=option_value[1];

  }
 }

//-->
</SCRIPT>
</body>
</html>

 

xhp_test.asp///////////////////////////////

<%
sel_value=request("sel_value")


'원래는 db로 처리를 해야겠죠..

'옵션텍스트/옵션값 으로 구성

Response.Write "Option2/2;Option3/3;Option4/4"

%>


홈페이지제작 홈페이지제작문의 회사홈페이지제작 쇼핑몰제작 쇼핑몰구축 폐쇄몰 복지몰 몰인몰 효과음 pop시스템 pos시스템 mes crm erp erp컨설턴트 scm me2day 물류프로그램 서버구입 홈페이지빌더 효과음 복지몰 erp프로그램 파워빌더 erp컨설턴트 일본구매대행 부동산119 제로옥션 동영상강의제작 홈페이지계약서 홈페이지제작추천 salesforceautomation 그룹웨어 아이템거래 아이템거래사이트 구직사이트 웹호스팅 웹호스팅비용 바코드시스템 온라인마케팅 IT컨설팅 웹에이전시 ToT 홈페이지제작 홈페이지제작문의 회사홈페이지제작 쇼핑몰제작 쇼핑몰구축 폐쇄몰 복지몰 몰인몰 효과음 pop시스템 pos시스템 mes crm erp erp컨설턴트 scm me2day 물류프로그램 서버구입 홈페이지빌더 효과음 복지몰 erp프로그램 파워빌더 erp컨설턴트 일본구매대행 부동산119 제로옥션 동영상강의제작 홈페이지계약서 홈페이지제작추천 salesforceautomation 그룹웨어 아이템거래 아이템거래사이트 구직사이트 웹호스팅 웹호스팅비용 바코드시스템 온라인마케팅 IT컨설팅 웹에이전시 ToTb
홈페이지제작 홈페이지제작문의 회사홈페이지제작 쇼핑몰제작 쇼핑몰구축 폐쇄몰 복지몰 몰인몰 효과음 pop시스템 pos시스템 mes crm erp erp컨설턴트 scm me2day 물류프로그램 서버구입 홈페이지빌더 효과음 복지몰 erp프로그램 파워빌더 erp컨설턴트 일본구매대행 부동산119 제로옥션 동영상강의제작 홈페이지계약서 홈페이지제작추천 salesforceautomation 그룹웨어 아이템거래 아이템거래사이트 구직사이트 웹호스팅 웹호스팅비용 바코드시스템 온라인마케팅 IT컨설팅 웹에이전시 ToTb

Posted by ToTb
2008. 9. 5. 23:26
# setInterval()과 XMLHTTP 를 이용하여 페이지 Refresh

* 장점
1) 브라우저 진행율 표시 안나타남
2) Refresh 소리 없음

--> 이 소스는 정해진 시간마다 회원이 로그아웃 했는지를 체크하기 위해 만들었습니다.
로그인상태의 회원은 LOGON 값을 현재시간으로 업데이트하고,
로그아웃상태인 회원은 LOGON 값이 널(null)이 됩니다.

* logon.asp 는 로그인한 회원정보를 보여주는 파일입니다.
* logon_update.asp 는 logon_time.asp 파일을 일정간격으로 refresh한 효과를 냅니다.
* logon_time.asp 파일은 현재시간을 LOGON 값에 넣어줍니다.



(1) XMLHTTP 설명

1. XMLHTTP 메서드

Abort 현재 HTTP 요청을 취소합니다.
GetAllResponseHeaders 응답 메시지에서 모든 헤더 필드를 검색합니다.
GetResponseHeader 응답 본문에서 HTTP 헤더의 값을 검색합니다.
Open HTTP서버에 대한 연결을 엽니다.
SetRequestHeader 요청 헤더 필드 중 하나를 설정합니다.
Send HTTP 서버로 요청을 보냅니다. 본문이 포함될 수 있습니다.


2. XMLHT TP 속성 : 속성을 사용하여 요청 확인
--> XMLHTTP 속성을 사용하면 요청을 확인할 수 있을 뿐만 아니라 서버로부터
반환된 값을 검색하여 요청으로 발생한 모든 오류를 확인할 수 있습니다.

=========================================================================
속성 값 설명
=========================================================================
OnReadyStateChange 이벤트 처리기 참조 비동기 작업에서만 사용합니다.
이 속성은 데이터가 서버에서 반환되는 것과 같은
대기 상태가 변경될 때 이벤트 처리기 호출을 지정합니다.

ReadyState Integer 비동기 작업의 상태, uninitialized (0), loading (1),
loaded (2), interactive (3), completed (4)를 나타냅니다.

ResponseBody Variant 배열 응답의 본문을 배열로 반환합니다.
ResponseStream IStream 응답의 본문을 ADO Stream 개체로 반환합니다.
ResponseText String 응답의 본문을 텍스트 문자열로 반환합니다.
ResponseXML XMLDocument 개체 응답의 본문을 MSXML XMLDOM 파서로 분석된 것으로
반환합니다.
Status Long 서버가 반환한 HTTP 상태 코드
StatusText String HTTP 응답 라인 상태
=========================================================================


(2) 소스 설명

'----------logon.asp 시작------------------

' member_uid : 회원 고유번호

<iframe width="0" height="0" border="0" frameborder="0" src="/logon_update.asp?member_uid=<%=member_uid%
>"></iframe>

'----------logon.asp 끝 ------------------




'----------logon_update.asp 시작------------------

<%
Dim member_uid
member_uid = Trim(Request.QueryString("member_uid")) ' 회원 고유번호
%>

<html>
<head>
<script language="javascript">
<!--

// logon_update.asp 파일을 로드한다.
function pageLoad() {

// (1) XMLHTTP 객체를 생성합니다.
var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP")

// (2) HTTP서버에 대한 연결을 엽니다.
xmlHTTP.open("get","logon_time.asp?member_uid=<%=member_uid%>",false);

// (3) HTTP 서버로 요청을 보냅니다.
xmlHTTP.send();

}

function intervalCall() {

setInterval("pageLoad()", 5000); // 5초간격으로 pageLoad()함수 호출

}

//-->
</script>
</head>
<body onload="intervalCall()">
</body>
</html>

'----------logon_update.asp 끝------------------



'----------logon_time.asp 시작------------------

<!--#include virtual="/dbconnect.asp"-->
<%
On Error Resume Next

Dim member_uid
member_uid = Trim(Request.QueryString("member_uid")) ' 회원 고유번호

Dim Dbcon, Rs, sqlQuery

' dbconnect.asp 에 정의된 DbOpen()함수를 통해 DB Connection 객체 생성
'(@@ 이부분은 직접 정의하여 사용하세요 ^^;)
Set Dbcon = DbOpen()

' 로그인한지 10초가 초과한 회원의 logon필드값을 널(NULL)로 업데이트
strSQL = ""
strSQL = "UPDATE Q_MEMBER"
strSQL = strSQL & " SET LOGON = NULL"
strSQL = strSQL & " WHERE DATEDIFF(SECOND, LOGON, getdate()) > 10"
Dbcon.Execute(strSQL)


sqlQuery = ""
sqlQuery = "SELECT * FROM MEMBER_INFO WHERE MEMBER_UID="& member_uid

' 회원 로그온 시간 업데이트
Set Rs = Server.CreateObject("ADODB.Recordset")
With Rs
.Source = sqlQuery
.ActiveConnection = Dbcon
.CursorType = adOpenStatic
.LockType = adLockPessimistic
.Open , , , ,adCmdText
.Fields("LOGON_TIME") = Now
.Update
End With

' Error 체크 (@@ ErrorCheck() 함수도 dbconnect.asp 에 정의됨.)
Call ErrorCheck("회원 로그온 시간 UPDATE 처리")

Rs.Close
Set Rs = Nothing

' DB Connection 객체 Close
DbClose(Dbcon)
%>


'----------logon_time.asp 끝------------------


Posted by ToTb