19-2 �ϥ����æ� iframe ���D�P�B�ǿ�

¨Æ¹ê¤W¡A«D¦P¨B¶Ç¿éªº¥\¯à¡A¨Ã«D¤@©w¥²¶·¾a AJAX ¨Ó¹F¦¨¡C¥»¤p¸`±N»¡©ú¦p¦ó¨Ï¥ÎÁôÂ桪º iframe ªº¤è¦¡¨Ó¹F¨ìÃþ¦üªº¥\¯à¡C

­º¥ý¡A§Ú­Ì¥ý¬Ý¤@­Ó½d¨Ò¡G

Example¡]ajax/asyncViaIFrame01.htm¡^¡G

¦b¤W­z½d¨Ò¤¤¡A·í§AÂI¿ï¡uÅã¥Ü¤lºô­¶¬ÛÃö¸ê°T...¡v«á¡A´N·|¬Ý¨ì¦øªA¾¹ªº¬ÛÃö¸ê°T¤w¸gÅã¥Ü¦bºô­¶¤W¡A¦p¤U¡G

¦Ó³o¾ã­Ó¹Lµ{¨Ã¨S¦³¸g¥Ñºô­¶ªº­«¸ü¨Ó¹F¦¨¡C¦¹½d¨Òªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]ajax/asyncViaIFrame01.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¨Ï¥Î iframe ¨Ó¶i¦æ«D¦P¨B¶Ç¿éªºÂ²³æ½d¨Ò</h2>
<hr>

<script>
// Åã¥Ü±q¦øªA¾¹¦^¶Çªº¸ê°T¡A¦¹¨ç¼Æ¥u·|³QÁôÂ꺤lºô­¶©Ò©I¥s¡C
function showRetrievedInfo(serverName, serverUrl, serverIp) {
	document.getElementById('show01').innerHTML=serverName;		// Åã¥Ü serverName
	document.getElementById('show02').innerHTML=serverUrl;		// Åã¥Ü serverUrl
	document.getElementById('show03').innerHTML=serverIp;		// Åã¥Ü serverIp
//	document.getElementById('myHiddenFrame').src='';		// ²M°£ iframe ªººô§}
}

// ¥Àºô­¶ªí³æªº¦^À³¨ç¼Æ¡A¥u³Q¥Àºô­¶©I¥s¡C
function mainCallBack(){
	var iframe = document.getElementById('myHiddenFrame');	// ¨ú±o iframe ª«¥ó
	iframe.src = "serverAction01.asp";	// ³]©w iframe ªººô§}¬° serverAction01.asp ¨Ã°õ¦æ¦¹ asp ºô­¶
}
</script>

<input type="button" value="Åã¥Ü¤lºô­¶¬ÛÃö¸ê°T..." onClick="mainCallBack()">
<p>¤lºô­¶¦øªA¾¹ºô°ì¦WºÙ¡G<div id="show01"></div>
<p>¤lºô­¶ºô§}¡G<div id="show02"></div>
<p>¤lºô­¶¦øªA¾¹ IP¡G<div id="show03"></div>

<iframe id="myHiddenFrame" style="display:none"></iframe>

</body>
</html>

¦b¤W­z­ì©l½Xªº§ÀºÝ¡A§Ú­Ì¥i¥H¬Ý¨ì¤@­ÓÁôÂêº iframe¡G

<iframe id="myHiddenFrame" style="display:none"></iframe> ³o­ÓÁôÂêº iframe ´N¬O§Ú­Ì°½°½½Ð¦øªA¾¹°õ¦æµ{¦¡½X¤§³B¡C¬°¤è«K»¡©ú¡A§Ú­Ì±N­ì½d¨Òºô­¶ºÙ¬°¡u¥Àºô­¶¡v¡A¦Ó±N iframe ©Ò°õ¦æªººô­¶ºÙ¬°¡u¤lºô­¶¡v¡A¥Ñ©ó iframe ¬OÁôÂ꺡A©Ò¥H¤lºô­¶ªºµ²ªG¨Ã¤£·|Åã¥Ü¥X¨Ó¡C¾ã­Óºô­¶¶i¦æ«D¦P¨B¶Ç¿éªº¤u§@¬yµ{¦p¤U¡G
  1. ·í¨Ï¥ÎªÌÂI¿ï¡uÅã¥Ü¤lºô­¶¬ÛÃö¸ê°T...¡v¡AÂsÄý¾¹·|©I¥s mainCallBack()¡A¥H³]©w iframe ªººô­¶¬° serverAction01.asp¡A´«¥y¸Ü»¡¡A¦¹®É¦øªA¾¹±N·|°õ¦æ serverAction01.asp¡A­ì©l½X¦p¤U¡G

    ­ì©lÀÉ¡]ajax/serverAction01.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
    <%@language=jscript%>
    <%//¥Î©óÁôÂälºô­¶ªºµ{¦¡½X¡A­t³d§ì¨ú ServerVariables%>
    <%
    // ¶i¦æ¦øªA¾¹ºÝªº¹Bºâ
    serverName=Request.ServerVariables("SERVER_NAME");
    serverUrl = Request.ServerVariables("URL");
    serverIp = Request.ServerVariables("LOCAL_ADDR");
    %>
    <script>
    // ©I¥s¥Àºô­¶ªº¨ç¼Æ showRetrievedInfo()¡A¥H«K¦b¥Àºô­¶Åã¥Ü¬ÛÃö¸ê°T
    window.parent.showRetrievedInfo('<%=serverName%>', '<%=serverUrl%>', '<%=serverIp%>');
    </script>
    

    ¦¹ ASP µ{¦¡½X·|³]©w serverName¡]¤lºô­¶¦øªA¾¹ºô°ì¦WºÙ¡^¡BserverUrl¡]¤lºô­¶ºô§}¡^¡BserverIp¡]¤lºô­¶¦øªA¾¹ IP¡^¤T­ÓÅܼƪº­È¡A¨Ã±N¦¹­È°e¨ìÂsÄý¾¹ªº JavaScript ¨ç¼Æ window.parent.showRetrievedInfo()¡C

  2. ·íÁôÂ桪º iframe ¦¬¨ì¦øªA¾¹¦^¶Çªº¸ê®Æ«á¡AÂsÄý¾¹±N·|°õ¦æ window.parent.showRetrievedInfo()¡A¥ç§Y©I¥s¥Àºô­¶ªº¨ç¼Æ showRetrievedInfo()¡C
  3. ¥Àºô­¶°õ¦æ showRetrievedInfo()¡A¨Ã±Nµ²ªGÅã¥Ü©ó¥Àºô­¶¤º¡A¨ä¤¤ document.getElementById('show01').innerHTML=serverName; ªº¥\¯à¬O±N id ¬° show01 ªºª«¥óªº¤º®e¶ñ¤J serverName Åܼƪº­È¡A´«¥y¸Ü»¡¡A¥Àºô­¶ªº <div id="show01"></div> ´N·|³Q¥N´«¦¨ <div id="show01">neural.cs.nthu.edu.tw</div> ¦]¦Ó§Ú­Ì´N¥i¥H¥ß¨è¬Ý¨ì¥Ñ¦øªA¾¹¦^¶Çªººô°ì¦WºÙ¡A¨Ì¦¹Ãþ±À¡C
¨Ï¥Î iframe ¨Ó¶i¦æ«D¦P¨B¶Ç¿é¡A¬O¤@­Ó²³æ¥i¦æªº¤è¦¡¡A¨¬¥H¹ï¥I¤@¯ë°ò¥»À³¥Î¡C¦ý¬O¦¹¤èªk³Ì¤jªº¯ÊÂI¡A¬O¤lºô­¶µLªk¤ä´© post ªº¸ê®Æ¶Ç°e¤è¦¡¡A­Y­n¸Ñ¨M³o­Ó°ÝÃD¡A¥i¥H¨Ï¥Î«áÄò¤p¸`©Ò­n»¡©úªº AJAX ¤èªk¨Ó¹F¦¨¡C

¦b¤U­±³o­Ó½d¨Ò¤¤¡A§Ú­Ì»¡©ú¦p¦ó¨Ï¥ÎÃþ¦üªº¤èªk¡A¨Ó¹ï¸ê®Æ®w¶i¦æ¬d¸ß¡A¨Ã¥H«D¦P¨Bªº¤è¦¡±N¬d¸ßµ²ªGÅã¥Ü©ó¦P¤@­Óºô­¶¡C¥Ñ©ó¤U¹F¬d¸ß®É¡A¤lºô­¶¥²¶·¨ú±o¬ÛÃöªº SQL «ü¥O¡A¦¹³¡¤À§Ú­Ì¬O±Ä¥Î get ªº¤è¦¡¨Ó±N SQL «ü¥O¶Ç°e¦Ü¤lºô­¶¡C½d¨Ò¦p¤U¡G

Example¡]ajax/asyncViaIFrame02.asp¡^¡G

¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¥ý¦C¥X¸ê®Æ®w ajax/basketball.mdb ªº¤º®e¡A¦@¥]§t¨â­Ó¸ê®Æªí¡A¤À§O¬O Player ©M Team¡C§Ú­Ì¥i¥Hª½±µ¦b¤å¦rÄæ¦ì¿é¤J SQL «ü¥O¡A´N¥i¥Hª½±µ§Q¥ÎÁôÂæ¡ iframe ªº¤è¦¡¨ÓÅã¥Ü¸ê®Æ®w¬d¸ßµ²ªG¡A¦Ó¤£¥²¸g¥Ñºô­¶­«¸ü¨Ó¹F¦¨¦¹¥\¯à¡C¨Ò¦p¡A­Y§Ú­Ìª½±µÂI¿ï¡u¶i¦æ¬d¸ß¡v¡A©Ò±o¨ìªºµ²ªG¦p¤U¡G

¦¹½d¨Ò¥Àºô­¶ªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]ajax/asyncViaIFrame02.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@ language="jscript" %>
<% title="¨Ï¥Î iframe ¨Ó¶i¦æ«D¦P¨B¶Ç¿éªº¶i¶¥½d¨Ò¡G¸ê®Æ®w¬d¸ß" %>
<!--#include file="../head.inc"-->
<hr>

<script>
// Åã¥Ü±q¦øªA¾¹¦^¶Çªº¸ê°T¡A¦¹¨ç¼Æ¥u·|³QÁôÂ꺤lºô­¶©Ò©I¥s¡C
function showQueryResult(result){
	document.getElementById('showSqlResult').innerHTML=result;	// Åã¥Ü¬d¸ßµ²ªG
}

// ¥Àºô­¶ªí³æªº¦^À³¨ç¼Æ¡A¥u³Q¥Àºô­¶©I¥s¡C
function sendQuery(){
	var sqlCommand = document.getElementById('sqlCommand');
	var sql=sqlCommand.value;
	var iframe = document.getElementById('hiddenIFrame');	// ¨ú±o iframe ª«¥ó
	iframe.src = "serverAction02.asp?sql="+escape(sql);	// ³]©w iframe ªººô§}¡A¨ä¤¤ sql ¥²¶·¥ý¸g¹L escape() ¨ç¼Æªº½s½X
}
</script>

<script language=jscript runat=server src=sqlUtility.fun></script>
<% database = "basketball.mdb"; %>
¸ê®Æ®w§¹¾ã¤º®e¡G
<center>
<table border=1>
<tr>
<th colspan=2 align=center>
¸ê®Æ®w "<%=database%>"
<tr>
<td align=center> ¸ê®Æªí "Player" ªº¤º®e
<td align=center> ¸ê®Æªí "Team" ªº¤º®e
<tr>
<td> <%=getQueryResult(database, "select * from Player")%>
<td> <%=getQueryResult(database, "select * from Team")%>
</table>
</center>
<p>
½Ð¿é¤J§AªºSQL«ü¥O¡G<br>
<input id=sqlCommand size=80 type=text value="SELECT * FROM Player WHERE Name LIKE '³¯%'"><br>
<input type="button" value="¶i¦æ¬d¸ß" onClick="sendQuery()">
<p>
¬d¸ßµ²ªG¡G<div id="showSqlResult"></div>

<iframe id="hiddenIFrame" style="display:none"></iframe>

<hr>
<!--#include file="../foot.inc"-->

¦b¦¹½d¨Ò¤¤¡A½Ð¯S§Oª`·N¨âÂI¡G

¦Ó¤lºô­¶ªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]ajax/serverAction02.asp¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<%@language=jscript%>
<%//¥Î©óÁôÂälºô­¶ªºµ{¦¡½X¡A­t³d¬d¸ß¸ê®Æ®w%>
<script language=jscript runat=server src=sqlUtility.fun></script>
<%
database="basketball.mdb";
sql=Request("sql")+"";
if (sql.search(/select/i)<0)	// Àˬd¬O§_¥H select ¶}ÀY
	outStr="<font color=red>SQL command not started with SELECT is disabled!</font>";
else 
	outStr=getQueryResult(database, sql);
%>
<script>
// ©I¥s¥Àºô­¶ªº¨ç¼Æ showQueryResult()¡A¥H«K¦b¥Àºô­¶Åã¥Ü¬ÛÃö¸ê°T
window.parent.showQueryResult('<%=outStr%>');
</script>

¥Ñ©ó§Ú­Ì¤£§Æ±æ¨Ï¥ÎªÌ¥h­×§ï¸ê®Æ®w¡A¦]¦¹§Ú­Ì·|¨Ï¥Î³q¥Î¹Bºâ¦¡¨ÓÀˬd SQL «ü¥O¡A­Y¤£¬O¥H "select" ¶}ÀY¡A«h»{©w¬O¤£¦Xªkªº SQL «ü¥O¨Ã¦^¶Çĵ§i°T®§¡uSQL command not started with SELECT is disabled!¡v¡C


JScript µ{¦¡³]­p»PÀ³¥Î¡G¥Î©ó¦øªA¾¹ºÝªº ASP Àô¹Ò