從屬站瀏覽器透過使用 URL 格式傳送要求呼叫 Net.Data。 本節說明如何在 URL 要求指定巨集呼叫 Net.Data。
傳給 Net.Data 的要求有下列格式。
http://server/Net.Data_invocation_path/filename/block[?name=val&...]
參數:
請直接在瀏覽器指定這個 URL。或者在 HTML 鏈結中使用這個 URL 或使用如下的格式建置這個 URL:
參數:
範例
下列範例列出呼叫 Net.Data 的各種方法:
範例 1:使用 HTML 鏈結呼叫 Net.Data:
<a href="http://server/cgi-bin/db2www/myMacro.d2w/report"> . . . </a>
範例 2:使用套表呼叫 Net.Data
<form method=post action="http://server/cgi-bin/db2www/myMacro.d2w/report"> . . . </form>
下列各節描述 HTML 鏈結與套表,以及如何使用它們呼叫 Net.Data 的詳細資訊:
如果您正在製作 Web 網頁,則您可以建立一個 HTML 鏈結, 造成 HTML 區塊的執行。使用者在瀏覽器上按一下定義為 HTML 鏈結的文字或影像時, Net.Data 會執行巨集中的 HTML 區塊。
若要建立 HTML 鏈結,請使用 HTML <a> 標籤。決定哪些文字或圖形, 您想要使用它們作為 Net.Data 巨集的超鏈結,然後以 <a> 及 </a> 標籤來圍住它。 在 <a> 標籤的 HREF 屬性中,請指定巨集及 HTML 區塊。
下列範例顯示當使用者在網頁上選取文字「列示所有監視器」時,可執行 SQL 查詢的鏈結。
<a href="http://server/cgi-bin/db2www/listA.d2w/report"> 列示所有監視器</a>
按一下鏈結即可呼叫名為 listA.d2w 的巨集,它具有名為 "report" 的 HTML 區塊, 如同下列範例所示一般:
%DEFINE DATABASE="MNS97" %FUNCTION(DTW_SQL) myQuery(){ SELECT MODNO, COST, DESCRIP FROM EQPTABLE WHERE TYPE='MONITOR' %} %HTML(report){ @myQuery() %}
此查詢會傳回一個表格,內容包含由 EQPTABLE 表格內所描述之每種監視器的型號、 成本及說明資訊。 這個範例會藉由因產生預設報表來顯示查詢結果。 請參閱報表區塊,以取得如何使用 REPORT 區塊來自行設定報表的資訊。
您可使用 HTML 套表動態地自行設定 Net.Data 巨集的執行。套表可讓使用者提供會影響巨集執行, 及 Net.Data 所建置之網頁內容的輸入值。
下列範例藉由讓使用者在瀏覽器中使用簡式 HTML 套表, 以選取所要顯示的產品類型資訊, 來建置 HTML 鏈結中的監視器列示範例。
<h1>Hardware Query Form</h1> <hr> <form method=post action="/cgi-bin/db2www/equiplst.d2w/report"> <p>What type of hardware do you want to see?</p> <menu> <li><input type="radio" name="hdware" value="mon" checked /> Monitors</li> <li><input type="radio" name="hdware" value="pnt" /> Pointing devices</li> <li><input type="radio" name="hdware" value="prt" /> Printers</li> <li><input type="radio" name="hdware" value="scn" /> Scanners</li> </menu> <input type="submit" value="submit" /> </form>
使用者在瀏覽器上選擇並按一下「提交」按鈕後, Web 伺服器就會處理用來呼叫 Net.Data 之 FORM 標籤的 ACTION 參數。然後, Net.Data 會在 equiplst.d2w 巨集中執行 HTML 報表區塊:
%DEFINE DATABASE="MNS97" %FUNCTION(DTW_SQL) myQuery(){ SELECT MODNO, COST, DESCRIP FROM EQPTABLE WHERE TYPE='$(hdware)' %REPORT{ <h3>Here is the list you requested</h3> %ROW{ <hr> $(N1): $(V1), $(N2): $(V2) <p>$(N3): $(V3) %} %} %} %HTML(report){ @myQuery() %}
在上面範例中,SQL 陳述式中的 TYPE=$(hdware) 的值取自於 HTML 套表輸入。 關於在 ROW 區塊使用的變數詳細說明,請參閱 Net.Data 參考手冊。
Net.Data 特殊處理的一種輸入類型是 FILE 輸入類型。 使用本輸入類型,使用者可將檔案上載到伺服器,伺服器上的 Net.Data 或其它應用程式會進一步處理檔案。
Net.Data 不轉換上載的檔案,它將該檔案視為二進位資料。 上載的檔案儲存於在 DTW_UPLOAD_DIR 指定的目錄而且給予唯一名稱,使用下列規則決定該名稱:
語法:
MacroFileName + '.' + FormVarName + '.' + UniqueIdentifier + '.' + FormFileName
YYYYMMDDHHMMSSCCC + '-' + PID + '-' + TID
其中︰
YYYY = 年 MM = 月 DD = 日 HH = 小時 (00-23) SS = 秒 CCC = 毫秒 PID = 程序 ID TID = 執行緒 ID
範例:
首先在 Net.Data 起始設定檔設定 DTW_UPLOAD_DIR︰
DTW_UPLOAD_DIR /home/http/pub/upload
然後建構一個呼叫巨集的套表並傳送檔名和檔案作為參數︰
<form method="post" enctype="multipart/form-data" action="/netdatadev/form.dtw/report"> <input type="text" name="name" value="john doe" />Enter name <input type="text" name="zipno" value="55901" />Enter number <input type="file" name="resume" value="myresume.txt" />Resume <input type="submit" /> </form>
若使用者接受預設值並提出此套表,結果檔會以下列方式出現在伺服器:
/home/http/pub/upload/form.dtw.resume.20000313112341275-6245-021.myresume.txt