ASP Lecture 2: การอ่านข้อมูลที่ส่งผ่านแบบฟอร์ม
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:58:19
สิ่งที่สำคัญที่สุดในการเรียนรู้ ASP คือการเรียนรู้ออบเจ็กต์ในตัวทั้งหกของ ASP ในความเป็นจริง ในการบรรยายครั้งก่อน เราได้เรียนรู้เกี่ยวกับออบเจ็กต์ Response แล้ว (จริงเหรอ? คุณทำผิดหรือเปล่า!) และวิธีการเขียน วิธีเปลี่ยนเส้นทาง และคุณสมบัติ Expires ที่ใช้บ่อยที่สุดในออบเจ็กต์ Response เมื่อคุณเห็นแนวคิดของวัตถุ วิธีการ คุณสมบัติ คอลเลกชัน และเหตุการณ์ (ฉันไม่รู้เลย!) หากคุณไม่เคยสัมผัสมาก่อน แสดงว่าคุณฉลาดและไม่สนใจแนวคิดเหล่านี้ แค่รู้ว่าจะใช้มันอย่างไร มุมมองของฉันคือมันเป็นเพียงจุดเริ่มต้นเท่านั้น สิ่งสำคัญคือการคัดลอก มาเรียนรู้ออบเจ็กต์ Request กันต่อผ่านตัวอย่าง เพื่อให้เข้าใจลึกซึ้งยิ่งขึ้น โปรดรันโปรแกรมเหล่านี้เพื่อดูผลลัพธ์ที่ได้
1. ใช้ Request.ServerVariables เพื่อรับตัวแปรสภาพแวดล้อม ส่วนนี้ง่ายมาก แต่เนื้อหาที่ได้รับมีความสำคัญมาก โปรดดูตัวอย่างต่อไปนี้:
<%@ ภาษา=VBScript %>
<HTML><BODY>
<% 'wuf8.asp
Response.Write "เส้นทางเพื่อเรียกใช้ไฟล์ ASP: " &_
Request.ServerVariables("Script_Name") & "<Br>"
Response.Write "ส่งคืนความยาวของข้อมูลของเนื้อหา: " &_
Request.ServerVariables("Content_Length") & "<Br>"
ตอบกลับเขียน "ส่งคืนที่อยู่ IP ของลูกค้า: " &_
Request.ServerVariables("Remote_Addr") & "<Br>"
ตอบกลับเขียน "ชื่อเบราว์เซอร์: " &_
Request.ServerVariables("HTTP_USER_AGENT") & "<Br>"
ตอบกลับเขียน "กลับสู่เส้นทางจริงของหน้าแรก: " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
-
<ตาราง colspan=8 เซลล์แพดดิ้ง=5 เส้นขอบ=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">ชื่อตัวแปรสภาพแวดล้อม</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">เนื้อหา</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
ผลลัพธ์1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
ผลลัพธ์2
</font></td></tr>
</ตาราง>
</BODY></HTML>
ตอนนี้ คุณน่าจะพบว่ารูทีน wuf2.asp ในการบรรยายครั้งก่อนนั้นง่ายแค่ไหน!
หมายเหตุ: มาร์กอัป HTML ในส่วนหลังของโปรแกรมนี้จัดทำขึ้นเพื่อเป็นตัวอย่างต่อไปนี้เท่านั้น ดังนั้นอย่าแปลกใจเลย แล้วมีตัวแปรสภาพแวดล้อมอะไรอีกบ้าง? คุณจะรู้ได้ด้วยการรันตัวอย่างต่อไปนี้ (โปรแกรมนี้ได้ลบโค้ดบางส่วนไปแล้ว วิธีที่ดีที่สุดคือดาวน์โหลดโปรแกรมต้นฉบับจากเว็บไซต์ของฉันเพื่อให้เข้าใจได้ง่ายขึ้น)
<%@ ภาษา=VBScript %>
<% 'wuf9.asp
ตัวเลือกที่ชัดเจน
ดิม สวี
-
<HTML><BODY>
<ตาราง colspan=8 เซลล์แพดดิ้ง=5 เส้นขอบ=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">ชื่อตัวแปรสภาพแวดล้อม</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">ผลลัพธ์</font></td>
</tr>
-
สำหรับแต่ละ Sv In Request.ServerVariables
ตอบกลับเขียน "<tr>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
การตอบสนองเขียน Sv
ตอบกลับเขียน "</font></td>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
การตอบสนอง เขียนคำขอ ServerVariables (Sv)
ตอบกลับเขียน "</font></td></tr>"
ต่อไป
-
</ตาราง>
</BODY></HTML>
A For...แต่ละวงถูกใช้ที่นี่เพื่อแสดงรายการองค์ประกอบทั้งหมดในคอลเลกชัน หากคุณไม่เข้าใจครึ่งหลัง กรุณาเปรียบเทียบ wuf8.asp ดูผลการวิ่ง และทำความเข้าใจให้ละเอียด (คุณมีทัศนคติอย่างไร)
2. ส่งข้อมูลไปยังเซิร์ฟเวอร์ผ่านแบบฟอร์ม (ซึ่งสามารถเข้าใจได้ว่าเซิร์ฟเวอร์อ่านข้อมูลที่ลูกค้าส่งอย่างไร)
หากคุณเคยทำงานในหน้าแรก คุณควรทราบว่าหน้าแรกหลายแห่งมักจะใช้แบบฟอร์มแบบฟอร์มเพื่อให้ผู้ใช้สามารถป้อนข้อมูลได้ จากนั้นจึงส่งข้อมูลผ่านปุ่ม "ส่ง" "วิธีการ" ในรูปแบบ From มีสองวิธีหลัก: POST และ GET หลังจาก "action" โดยปกติแล้วจะระบุไฟล์ .cgi, .pl หรือ .asp สิ่งที่เราจะเรียนรู้ในวันนี้คือวิธีเขียน .asp นี้ ไฟล์.
(1) หากคุณใช้วิธี POST ในการส่งข้อมูล ให้ใช้ Request.Form เพื่ออ่านข้อมูล
ขั้นแรกให้แก้ไขไฟล์ wuf10.htm ต่อไปนี้เพื่อให้ผู้ใช้ป้อนข้อมูล:
<html>
<body bgcolor="#FFFFFF">
<รูปแบบวิธีการ = "โพสต์" การกระทำ = "wuf11.asp">
ชื่อ: <input type="text" name="yourname"><br>
เพศ: <select name="gender">
<option>ชาย</option>
<option>เพศหญิง</option>
</เลือก> <br>
ข้อความ: <textarea name="message">สวัสดี!
ให้ความสนใจกับการประมวลผลข้อความหลายบรรทัด</textarea> <br>
งานอดิเรก (กดปุ่ม Ctrl ค้างไว้เพื่อเลือกหลายรายการ):
<select name="งานอดิเรก" หลายขนาด="4">
<option>คอมพิวเตอร์</option>
<option>ช็อปปิ้ง</option>
<option>ภาพยนตร์</option>
<option>การอ่าน</option>
</เลือก> <br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</แบบฟอร์ม>
</ร่างกาย>
</html>
จากนั้นเขียนไฟล์ wuf11.asp ที่ wuf10.htm จำเป็นต้องใช้ในการรวบรวมข้อมูล:
<%@ ภาษา=VBScript %>
<% 'wuf11.asp
ตัวเลือกที่ชัดเจน
การตอบกลับหมดอายุ=0
StrName จาง, StrGender, StrM, StrMsg
StrName = Trim(Request.Form("yourname")) 'ฟังก์ชัน Trim ใช้เพื่อลบช่องว่างนำหน้าและต่อท้าย
StrGender = Trim(Request.Form("gender"))
StrM = Trim(Request.Form("ข้อความ"))
StrMsg = แทนที่(StrM,vbcrlf,"<Br>" & vbcrlf)
' vbcrlf เทียบเท่ากับการรวมกันของการขึ้นบรรทัดใหม่และการป้อนบรรทัด ส่วนฟังก์ชันแทนที่นั้น ฟังก์ชันคือการแทนที่ vbcrlf ในสตริง StrM ด้วย "<Br>" & vbcrlf (โปรดนึกถึงการใช้ vbcrlf นี้ด้วย คุณจะเข้าใจได้โดยดูจากซอร์สโค้ด HTML ของไฟล์เอาต์พุต) โปรดดูรายละเอียดวิธีใช้ VBScript
-
<HTML><BODY>
ชื่อ: <%= StrName%><Br><Br>
เพศ: <%= StrGender%><Br><Br>
ข้อความ: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
อันที่จริงแล้ว ค่าของปุ่ม "ส่ง" ก็ถูกส่งผ่านเช่นกัน: <Br>
<%= แบบฟอร์มคำขอ("ส่ง")%><Br><Br>
<% 'ขั้นแรกให้ทำความเข้าใจข้างต้น จากนั้นดูวิธีอ่านหลายตัวเลือกหากคุณสนใจ
Response.Write "จำนวนงานอดิเรกที่เลือกทั้งหมด:" & Request.Form("hobby").Count & "<Br>"
ดิม ไอ
สำหรับ I = 1 ถึง Request.Form("hobby").Count
Response.เขียนคำขอแบบฟอร์ม("งานอดิเรก")(I) & "<Br>"
ต่อไป
-
</BODY></HTML>
ในตัวอย่างนี้ เพื่อความสะดวกในการทำความเข้าใจ เราใช้สองโปรแกรม จริงๆ แล้ว คุณสามารถใช้เพียงโปรแกรมเดียวก็ได้ หากคุณสนใจ โปรดดูรูทีน wuf12.asp ต่อไปนี้ ซึ่งจะช่วยให้คุณเข้าใจตัวแปรสภาพแวดล้อมได้ลึกซึ้งยิ่งขึ้น
<%@ ภาษา=VBScript %>
<% 'wuf12.asp
ตัวเลือกที่ชัดเจน
การตอบกลับหมดอายุ=0
StrName จาง, StrGender, StrM, StrMsg
ถ้า Request.ServerVariables("Content_Length") <> 0 จากนั้น
'หลังจากส่งข้อมูลแล้ว ความยาวจะไม่เป็น 0 ดังนั้นให้ดำเนินการคำสั่งต่อไปนี้เพื่อแสดงผลลัพธ์
'ส่วนต่อไปนี้คัดลอกมาจาก wuf11.asp จริงๆ
StrName = Trim(Request.Form("ชื่อของคุณ"))
StrGender = Trim(Request.Form("gender"))
StrM = Trim(Request.Form("ข้อความ"))
StrMsg = แทนที่(StrM,vbcrlf,"<Br>" & vbcrlf)
-
<HTML><BODY>
ชื่อ: <%= StrName%><Br><Br>
เพศ: <%= StrGender%><Br><Br>
ข้อความ: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
-
Response.Write "จำนวนงานอดิเรกที่เลือกทั้งหมด:" & Request.Form("hobby").Count & "<Br>"
ดิม ไอ
สำหรับ I = 1 ถึง Request.Form("hobby").Count
Response.เขียนคำขอแบบฟอร์ม("งานอดิเรก")(I) & "<Br>"
ต่อไป
-
</BODY></HTML>
-
อื่น
'เมื่อโหลดเพจครั้งแรกไม่มีการส่งข้อมูลจึงไม่ได้ดำเนินการส่วนก่อนหน้าแต่เริ่มจากที่นี่
'นี่คือเหตุผลว่าทำไมจึงมี <HTML></HTML> สองคู่
'เพียงคัดลอก wuf10.htm ด้านล่าง
'<form method="post" action="wuf11.asp"> ถูกแทนที่ด้วยตัวแปรสภาพแวดล้อม แต่ก็เหมือนกันทุกประการ
Response.Write "ดูผลลัพธ์: " & Request.ServerVariables("Script_name") & "<Br>"
-
<HTML><BODY>
<form method="post" action="<%= Request.ServerVariables("Script_name")%>">
ชื่อ: <input type="text" name="yourname"><br>
เพศ: <select name="gender">
<option>ชาย</option>
<option>เพศหญิง</option>
</เลือก> <br>
ข้อความ: <textarea name="message">สวัสดี!
ให้ความสนใจกับการประมวลผลข้อความหลายบรรทัด</textarea> <br>
งานอดิเรก (กดปุ่ม Ctrl ค้างไว้เพื่อเลือกหลายรายการ):
<select name="งานอดิเรก" หลายขนาด="4">
<option>คอมพิวเตอร์</option>
<option>ช็อปปิ้ง</option>
<option>ภาพยนตร์</option>
<option>การอ่าน</option>
</เลือก> <br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</แบบฟอร์ม>
</BODY></HTML>
<%สิ้นสุดถ้า%>
(2) หากคุณใช้วิธี GET เพื่อส่งข้อมูล ให้ใช้ Request.Querystring เพื่ออ่านข้อมูล
ขั้นแรกให้แก้ไขไฟล์ wuf13.htm ต่อไปนี้เพื่อให้ผู้ใช้ป้อนข้อมูล:
<html>
<body bgcolor="#FFFFFF">
<รูปแบบวิธีการ = "รับ" การกระทำ = "wuf14.asp">
ชื่อภาษาอังกฤษ: <input type="text" name="Ename"> <br>
ชื่อภาษาจีน: <input type="text" name="Cname"><br>
เพศ: <select name="gender">
<option>ชาย</option>
<option>เพศหญิง</option>
</เลือก> <br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</แบบฟอร์ม>
</ร่างกาย>
</html>
จากนั้นเขียนไฟล์ wuf14.asp ที่ wuf13.htm จำเป็นต้องใช้ในการรวบรวมข้อมูล:
<%@ ภาษา=VBScript %>
<% 'wuf14.asp
ตัวเลือกที่ชัดเจน
การตอบกลับหมดอายุ=0
Dim StrCname, StrEname, StrGender
StrEname = Trim(Request.QueryString("Ename")) 'ฟังก์ชัน Trim ใช้เพื่อลบช่องว่างนำหน้าและต่อท้าย
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("gender"))
-
<HTML><BODY>
ชื่อภาษาอังกฤษ: <%= StrEname%><Br><Br>
ชื่อภาษาจีน: <%= StrCname%><Br><Br>
เพศ: <%= StrGender%><Br><Br>
ดูสตริงที่ส่ง: <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
เพื่อให้เข้าใจโปรแกรมนี้ได้ดีขึ้น คุณควรลองใช้เอฟเฟ็กต์ของรูทีน wuf13.htm ในเบราว์เซอร์ก่อน และดูผลลัพธ์ที่ได้ คุณจะพบว่าสตริงแบบยาวในแถบที่อยู่ดูคุ้นเคย เช่นเดียวกับเมื่อก่อน ค้นหาใน Yahoo เห็นค่อนข้างเหมือนกัน ในขณะนี้ คุณพยายามป้อน "http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=Female" โดยตรงในแถบที่อยู่ และคุณจะได้รับผลลัพธ์เดียวกัน ดังนั้นคุณจะเห็นได้ด้วยวิธีนี้ ผลลัพธ์ของ wuf13.htm คือการได้รับลิงก์ที่มีพารามิเตอร์เช่นนี้ Request.QueryString อ่านข้อมูลแต่ละรายการจากพารามิเตอร์เพิ่มเติมของที่อยู่ http://
ในความเป็นจริง เมื่อกดปุ่ม "ส่ง" สตริงการสืบค้น (ข้อมูลที่ป้อน) จะถูกต่อท้ายที่อยู่ URL ในรูปแบบของพารามิเตอร์ (แต่ละพารามิเตอร์จะถูกคั่นด้วย "&") เพื่อให้บรรลุวัตถุประสงค์ในการถ่ายโอนข้อมูล ในเวลาเดียวกัน โปรดทราบว่าไม่มีภาษาจีนในสตริงการสืบค้นที่แสดงในเบราว์เซอร์ มีแต่อักขระที่อ่านไม่ออกซึ่งจำไม่ได้ซึ่งมีเครื่องหมายเปอร์เซ็นต์อยู่ด้วย เนื่องจากมันถูกเข้ารหัส สุดท้ายเหมือนเมื่อก่อน ทั้งสองโปรแกรมนี้สามารถรวมเป็นโปรแกรมเดียวได้ (ตามปกติ wuf15.asp คุณต้องดาวน์โหลดจากเว็บไซต์ของฉัน)
หมายเหตุบางประการ:
1. หากคุณใช้วิธี POST เพื่อส่งข้อมูล Request.ServerVariables("Content_Length")>0
หากคุณใช้วิธี GET เพื่อส่งข้อมูล ดังนั้น Request.ServerVariables("Query_String") <> ""
2. หลังจากทำความเข้าใจหลักการแล้ว คุณสามารถผสม Request.Form และ Request.QueryString ในไฟล์ ASP เดียวกันได้
3. หากมีหลายปุ่มในแบบฟอร์ม คุณจะทราบได้อย่างไรว่าผู้ใช้กดปุ่มใด หากคุณให้ความสนใจ คุณจะพบว่ามีประโยคหนึ่งในรูทีน wuf11.asp ที่มีการส่งสัญญาณค่าของปุ่ม "ส่ง" ด้วย และค่าที่คล้ายกันสามารถพบได้ในสตริงการสืบค้นที่สร้างใน wuf13.htm โปรดทราบ: เฉพาะค่าของปุ่มกดเท่านั้นที่จะถูกส่ง ในขณะที่ค่าของปุ่มอื่นๆ คือ "" นี่เป็นพื้นฐานสำหรับการตัดสิน (เว็บไซต์ InfoWeb ของ "China Planning News" มีบทความที่คล้ายกัน)