您現在的位置是:電腦技術吧?>? 基礎知識 ??>??集合的,集合有什么用??>??正文詳情

集合的,集合有什么用

郭千秋2019-12-03 16:32:07 人圍觀
簡介集合的種類當用戶填寫頁面內容<表單>或在瀏覽器地址欄中輸入URL后的值時提供的所有值,這些值由ASP腳本通過表單和查詢字符串集使用。這是訪問ASP代碼中的值的簡單方法。一集合

當用戶填寫頁面<FORM>內容時所提供的全部值,或在瀏覽器地址欄輸入在URL后的值,通過Form和QueryString集合為ASP腳本所用。

這是在ASP代碼中訪問值的一種簡單方法。

  1、 訪問ASP集合的一般技術  大多數ASP集合與在VB中見到的普通集合相差不多。

實際上,它們是值的數組,但能通過使用一個文本字符串鍵(對大小不敏感)以及一個整型索引進行訪問。

因此,假如客戶端Web頁面包含的<FORM>如下: <FORM ACTION=show_request.asp METHOD=POST> FirstName:<INPUT TYPE=TEXT NAME=FirstName> LastName:<INPUT TYPE=TEXT NAME=LastName> <INPUT TYPE=SUBMIT VALUE=Send> </FORM>   可通過訪問ASP的Form集合來訪問其控件內的值: strFirstName = Request.Form(FirstName) strLastName = Request.Form(LastName)   也可使用窗體中控件的整型索引,索引的范圍從在HTML中第一個定義的控件開始,然后根據定義的順序排序: strFirstName = Request.Form(1) strLastName = Request.Form(2)   然而,后面的這種以整型為索引的技術不推薦使用,因為一旦有HTML中的控件發生了變化,或者插入一個新的控件,則ASP代碼將得到錯誤的值。

進一步而言,對于閱讀代碼的人來講,極容易混淆。

  1) 訪問集合的全部值  可以通過引用集合把整個Form上的一系列值變成單個的字符變量,且不用提供鍵或索引。

StrAllFormContent = Request.Form   假如文本框包含值Priscilla和Descartes,則Request.Form語句將返回下列字符: FirstName=PriscillaLastName=Descartes   注意,提供的值是以名稱/值對的形式出現的(即控件名稱=控件值),并且每一對名稱/值相互之間是用符號相分隔的。

假如打算把窗體中的內容傳遞單獨的,希望得到值的標準格式的可執行應用程序或DLL,這個技術是很有用的。

然而,一般說來,都是通過以窗體中控件的名稱為文本鍵來訪問集合中的內容。

  2) 遍歷一個ASP集合  有兩種方式遍歷一個ASP集合中的所有成員,方式與普通VB集合的基本相同。

每個集合提供一個Count屬性,返回的是集合中條目數量。

可通過使用一個整型索引使用Count屬性來遍歷。

For intLoop=1 To Request.Form.Count Response.Write Request.Form(intLoop) <BR> Next   假如先前的窗體包含Priscilla和Descartes值的兩個文本框,將得到如下結果: Priscilla Descartes   然而,更好的方法是使用For Each...Next結構。

For Each objItem In Request.Form Response.Write objItem = Request.Form(objItem) <BR> Next   這帶來的好處是既可以訪問控件的名稱又可訪問其值。

上述代碼將得到如下結果: FirstName = Priscilla LastName = Descartes   注意,一些瀏覽器返回到ASP的<FORM>值可能與頁面上顯示的順序不盡相同。

  3) 集合成員的多值性  在某些情況下,ASP集合中的各個成員可能不止一個值,這種情況發生在HTML定義中有幾個控件有相同Name屬性時。

例如: <FORM ACTION=Show_request.asp METHOD=POST> <INPUT TYPE=TEXT NAME=OtherHobby> <INPUT TYPE=TEXT NAME=OtherHobby> <INPUT TYPE=TEXT NAME=OtherHobby> <INPUT TYPE=SUBMIT VALUE=Send> </FORM>   在Form集合中,將為OtherHobby創建一個條目。

然而,它將包括從三個文本框中得到的值。

假如在提交時,用戶留下了一個或多個為空,則返回的值為空字符串。

假如用戶在第一和第三個文本框分別輸入Gardening和Mountaineering,第二個文本框為空,在我們的ASP代碼中訪問Request.Form(OtherHobby),將返回字符串:Gardening, ,Mountaineering  為了能夠在這種情況下,訪問單個值,可以用復雜一些的代碼: For Each objItem In Request.Form  If Request.Form(objItem).Count >1 Then More than one value in this item Response.Write objItem :<BR>   For intLoop = 1 To Request.Form(objItem).Count    Response.Write Subkey intLoop value = Request.Form(objItem) (intLoop) <BR>   Next  Else   Response.Write objItem = Request.Form(objItem) <BR>  End If Next   對于前面的包含三個OtherHobby控件的窗體實例,這將返回: OtherHobby: Subkey 1 value = Gardening Subkey 2 value = Subkey 3 value = Mountaineering   然而,由于很少給多個文本框相同的名字,因此這種技術很少用到。

  a) HTML中的單選或選頁按鈕控件  在HTML中,需要給幾個控件相同的Name屬性的情況是單選(或選項)按鈕,例如: <FORM ACTION=show_request.asp METHOD=POST> I live in: <INPUT TYPE=RADIO NAME=Country VALUE=AM>America<BR> <INPUT TYPE=RADIO NAME=Country VALUE=EU>Europe<BR> <INPUT TYPE=RADIO NAME=Country VALUE=AS>Asia<BR> <INPUT TYPE=SUBMIT VALUE=Send> </FORM>   因為用戶只能選擇多項中的一個(這就是給它們相同的名字的原因),將僅得到一個返回值,瀏覽器只能發送所選擇控件的值。

因此,假如這個窗體的用戶已經選擇了Europez,將得到這個條目,通過遍歷Form集得到其值:Country = EU  由于為每個控件提供了不同的VALUE屬性,反映了每個條目所對應的國家或地區的名稱。

假如省略了VALUE屬性,瀏覽器將返回的值為on,因此將得到:Country = on  這是不經常用到的,因此一般對使用相同名稱的單選控件使用VALUE屬性。

  b) HTML復選框控件  當一個窗體中HTML源碼包含一個復選框控件時,一般都給定唯一的名稱,例如: <FORM ACTION=show_request.asp METHOD=POST> I enjoy: <INPUT TYPE=CHECKBOX NAME=Reading CHECKED> Reading <INPUT TYPE=CHECKBOX NAME=Eating> Eating <INPUT TYPE=CHECKBOX NAME=Sleeping> Sleeping <INPUT TYPE=SUBMIT VALUE=Send> </FORM>   在這種情況下,提交窗體時,假如僅是第一和第三個復選框被選中(加標記),遍歷Form集合時,會得到下列值: Reading = on Sleeping = on   然而,假如為每個復選框提供一個值,把這個值發往服務器代替字符串on。

例如窗體如下: <FORM ACTION=show_request.asp METHOD=POST> I enjoy: <INPUT TYPE=CHECKBOX VALUE=Hobby025 NAME=Hobby CHECKED>_ Swimming <INPUT TYPE=CHECKBOX VALUE=Hobby003 NAME=Hobby CHECKED>_ Reading <INPUT TYPE=CHECKBOX VALUE=Hobby068 NAME=Hobby>Eating <INPUT TYPE=CHECKBOX VALUE=Hobby010 NAME=Hobby>Sleeping <INPUT TYPE=SUBMIT VALUE=Send> </FORM>   如果除第三個復選框外,全部提交,在Request.Form集合會產生下列結果: Hobby = Hobby025, Hobby003, Hobby010   假如編寫更復雜一些集合遍歷代碼,如先前所述(單獨顯示每個子鍵),就得到這樣結果: Hobby: Subkey 1 value = Hobby025 Subkey 2 value = Hobby003 Subkey 3 value = Hobby010   需要注意的是兩種情況,沒有選中的控件根本不返回任何值。

在第一種情況的結果里,沒有欺騙性的逗號,第二種情況也沒有空值。

這與上述的使用文本框的相當的測試的結果不一樣。

使用文本框時,每個文本框都返回一個值,即使是一個空字符串。

這是瀏覽器造成這樣的結果。

因此在ASP代碼中訪問集合時,要注意這個問題。

  上述情況一個棘手的負作用是使用復選框時,復選框值的索引與在原始的HTML中控件的位置沒有任何聯系,在上述的例子中第四個復選框的子鍵數為3,因為當窗體提交時,第二個控件沒有選中。

  c) HTML列表控件  HTML中的<SELECT>標記用來產生標準的下拉列表框,其值以一種有趣的混合方式表示。

下列的窗體創建了包含5個值可供用戶選擇,由于包含了MULTIPLE屬性,因此可以通過選擇時按下Shift或Ctrl鍵,選擇不僅一個的條目。

<FORM ACTION=show_request.asp METHOD=POST> <SELECT NAME=Hobby SIZE=5 MULTIPLE> <OPTION VALUE=Hobby001>Programming</OPTION> <OPTION VALUE=Hobby025>Swimming</OPTION> <OPTION VALUE=Hobby003>Reading</OPTION> <OPTION VALUE=Hobby068>Eating</OPTION> <OPTION VALUE=Hobby010>Sleeping</OPTION> </SELECT><P> <INPUT TYPE=SUBMIT VALUE=Send> </FORM>   這種特殊的情況返回的是在Form集合中單個條目,它包含選擇的值(單個的<OPTION>標記中指定的VALUE屬性),用逗號分隔: Hobby = Hobby025, Hobby003, Hobby010   假如使用更加復雜一些的集合遍歷代碼(單獨顯示每個子鍵),將得到: Hobby: Subkey 1 value = Hobby025 Subkey 2 value = Hobby003 Subkey 3 value = Hobby010   這與上述相同名稱的復選框的情況相同。

事實上可以認為一個SELECT列表是一列復選框的列表供選擇(不是選中)相應的條目。

  然而,列表框也有指定的值,假如在<OPTION>標記中設置VALUE屬性,將得到的是選擇的選項的文本內容,Request.Form集將包含這樣一個項目: Hobby = Swimming, Reading, Sleeping   并且,同樣,復雜一些的集合遍歷代碼將返回如下結果: Hobby: Subkey 1 value = Swimming Subkey 2 value = Reading Subkey 3 value = Sleeping   當然,假如單個項目被選擇,且在<OPTION>中提供了VALUE屬性,得到結果包含的僅是: Hobby = Hobby025   如果沒有提供VALUE屬性,得到: Hobby = Swimming   這允許既可以缺省(即無VALUE)顯示選項文本,也可做相應的改變。

后一種情況在某些情況下是極為有用的,如要顯示(一個說明的字符串)和傳遞一個完全不同的內容(如用一個短碼代表一個說明性的字符串)。

  d) HTML提交和圖像控件  復選框和單選框是布爾型控件的例子,選中或選擇返回的為on,不像文本框和大多數其他的HTML控件,瀏覽器不包含沒有選中或沒有選擇的控件的值。

  還有另外一種常用的布爾型控件,稱為HTML按鈕。

如<INPUT TYPE=SUBMIT>、<INPUT TYPE=RESET>、<INPUT TYPE=IMAGE>、<INPUT TYPE=BUTTON>和<BUTTON>...</BUTTON>類型。

  BUTTON類型的控件不返回任何值,因其對窗體沒有直接的影響。

即使使用用來調用窗體的Submit方法,瀏覽器在任何請求中將不包含BUTTON類型控件的值。

同樣,一個<INPUT TYPE=RESET>按鈕的值也決不會發往服務器。

  然而,輸入按鈕控件SUBMIT和IMAGE類型實際提交窗體給服務器,其VALUE屬性包含窗體的其他控件的值(只要在HTML定義中包含一個NAME屬性)。

例如,這個窗體可能是向導類型Web應用程序的一部分,允許用戶一步步進行或取消進程: <FORM ACTION=show_request.asp METHOD=POST> <INPUT TYPE=SUBMIT NAME=btnSubmit VALUE=Next> <INPUT TYPE=SUBMIT NAME=btnSubmit VALUE=Previous> <INPUT TYPE=SUBIMT NAME=btnSubmit VALUE=Cancel> </FORM>   在一個窗體中,可以包括多個SUBMIT按鈕。

在這種情況下,應該給每一個按鈕唯一的VALUE屬性,如上所示。

當一個窗體被提交時,遍歷Request.Form集合的值,將產生一個值,這個值依賴于按下哪個按鈕用于提交這個窗體。

假如用戶按下的Previous按鈕,將得到:btnSubmit = Previous  因此,可查詢Request.Form集合來決定下一個顯示的頁面,例如: Select Case Request.Form(btnSubmit) Case Next Response.Redirect page_3.asp Case Previous Response.Redirect page_1.asp Case Cancel Response.Redirect main_menu.asp End Select   同時,也可根據需要對每個按鈕使用不同的NAME屬性。

且選擇其值包含在Form集合中的控件名稱。

在控件沒有一個完整的標記而是隨后跟著較長的文本標簽的情況下,極為有用,如下圖所示。

  此屏幕上的界面由下列代碼產生: <FORM ACTION=show_request.asp METHOD=POST> <B>What do you want to do now?</B><P> <INPUT TYPE=SUBMIT NAME=btnNext VALUE= > Go on the next page<P> <INPUT TYPE=SUBMIT NAME=btnPrevious Value= > GO back to the previous page<P> <INPUT TYPE=SUBMIT NAME=btnCancel VALUE= > Cancel and go back to the main menu page<P> </FORM>   在ASP頁面中,接收到數據后,可以檢查按扭名稱提供的值來判斷按下的是哪個按鈕。

If Len(Request.Form(btnNext)) Then Response.Redirect page_3.asp If Len(Request.Form(btnPrevious)) Then Response.Redirect page_1.asp If Len(Request.Form(btnCancel)) Then Response.Redirect main_menu.asp   這個工作是查詢一個鍵上的ASP集合,如果不存在則返回一個空的字符串。

換句話說,如果第二個按鈕(previous頁)按下,則Request.Form(btnNext)的值是一個空字符串,則其長度為零而不至于產生一個錯誤。

當第二個按鈕按下時,則在Form集合中這個條目的值Request.Form(btnPrevious),將是 其長度大于零。

  e) 提高使用Request集合的效率  訪問一個ASP集合來下載一個值是費時的需計算資源的過程,因為這個操作包含了一系列對相關集合的搜索,這比訪問一個局部變量要慢得多。

因此,如果打算在頁面中多次使用集合中的一個值,應該考慮將其存貯成為一個局部變量,例如: strTitle = Request.Form(Title) strFirstName = Request.Form(FirstName) strLastName = Request.Form(LastName) If Len(stTitle) Then strTitle = strTitle If strFirstName = Then StrFullName = strTitle strLastName ElseIf Len(strFirstName) = 1 Then StrFullName = strTitle strFirstName strLastName Else StrFullName = strTitle strFirstName strLastName End If   f) 搜索所有的Request集合  在某些情況下,可能知道一個值的鍵名將出現在Request集合中,但不能準確地知道是哪一個集合。

例如,假如有幾個頁面(或一個頁面的不同段)發送一個值給同一個ASP腳本,它可能在Form或者QueryString集合中出現。

  要看一下一個值為什么可能出現在不同的集合中,考慮一下這種情況:使用了<A>超級鏈接元素請求一個頁面。

在這種情況下,增加一個值到請求的唯一方法是把它加到URL上。

然而,同樣的值可能已出現在另一個頁面的<FORM>中,或同一頁面不同部分: ... <FORM ACTION=process_page.asp METHOD=POST> <INPUT TYPE=SUBMIT NAME=page VALUE=Next> <INPUT TYPE=SUBMIT NAME=page VALUE=Previous> <INPUT TYPE=SUBMIT NAME=page VALUE=Help> </FORM> ... ... For help go to the <A HREF=process_page.asp?page=Help>Help Page</A> ...   在這種情況下,按下窗體上的Help按鈕,將發送Request.Form集合中一對名稱/值page=Help。

然而,按下<A>超級鏈接也可能發送名稱/值Page=Help,但是這次卻是在QueryString集合里。

為訪問這個值,可使用ASP Request對象的一個特殊功能:strPage = Request(page)  這將按序搜索全部的集合QueryString、Form、Cookies、ClientCertificate、ServerVariables,直到發現第一個匹配值的名稱。

這樣做比直接訪問適當的集合效率低,并且是不安全的,除非能絕對保證這個值不會出現在另外一個集合中。

  例如,可能希望搜集滿足客戶請求的Web服務器的名稱,這通過出現在每個查詢中的Request.ServerVariables集合中尋找SERVER_NAME來實現。

然而,假如任一其他的集合也包含名為server_name的值(記住鍵名不區分大小寫),當使用Request(server_name)時,得到的是錯誤的結果。

使用Reqeust.ServerVariables(server_name)句法,我們將很難進行錯誤追蹤。

總而言之,使用搜索全部集合技術要格外小心,且只在沒有其他技術能夠提供你需要的結果時使用。

  g) 訪問其他的集合  本文的這一節里,已經集中討論了Form集合,這可能是使用得最多的一個。

然而,所有這些技術同樣適用于其他的對象。

包括那些由Request對象提供的(即Form、QueryString、Cookies、ServerVariables和ClientCertificate)集合,及由Response對象提供的cookies(及其他對象提供的集合)。

  我們將簡短了解一個值如何進入一個QueryString集合,及其優點和不足。

然而,同時這兩個Cookies集合有額外的功能,可以使使用cookie更加方便,下面討論這個內容。

版權聲明:本文由 郭千秋 整理編輯。

原標題:集合里面可以有集合嗎,集合詳解

轉載注明出處:http://www.dn9ww09s.icu/basics/15068.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • 編程數據庫,數據庫開發用什么編程

    編程數據庫,數據庫開發用什么編程 相關圖片數據庫的編寫我相信很多人都見過數據庫。在這里,我來談談我的方法。步驟1:備份現有數據庫。第2步:執行以下ASP文件,以便刪除數據庫中的JS特洛伊木馬程序:注意:CONN.A數據編程...

  • asp是數據庫連接嗎,access數據庫連接asp

    asp是數據庫連接嗎,access數據庫連接asp 相關圖片asp數據庫連接出錯訪問數據庫教程連接代碼dim Conn,connstr,timesdb,RS timesdb=。。/www.111cn。網絡asp連接sqlserver實例...

  • 關鍵詞代碼,如何知道代碼關鍵詞

    關鍵詞代碼,如何知道代碼關鍵詞 相關圖片球球關鍵詞代碼在web開發中,我經常遇到多個關鍵字對來查詢單個字段,這通常是通過動態數組來實現的。當然,多個關鍵字通常用空格或分隔。我假設多個關鍵字由空格分隔。關鍵字...

  • word生成多級目錄,目錄頁碼怎么生成

    word生成多級目錄,目錄頁碼怎么生成 相關圖片怎樣自動生成目錄ASP目錄生成功能有兩種:一種是只創建一級目錄,另一種是支持同時生成多個目錄。子文件夾(foldername)dim fsoset fso=server.cre目錄生成方式...

  • 存儲過程調用,如何調用存儲過程

    存儲過程調用,如何調用存儲過程 相關圖片sql存儲過程調用使用SQL server存儲過程可以大大提高程序的運行速度,簡化程序維護的難度,得到了廣泛的應用。存儲過程是可以接受和返回用戶提供的參數的transact-SQsql怎么調用存儲過...

  • 字符在字符串出現的次數,字符串出現最多的字符

    字符在字符串出現的次數,字符串出現最多的字符 相關圖片統計字符串中每個字符出現的次數使用此函數返回字符串中字符或字符串的出現次數,其中Mainstr是要搜索的字符串,substr是要檢查的字符串。函數countinstances(Mainstr輸入一個字符串...

  • 當前訪問頁面升級中,python訪問集合

    當前訪問頁面升級中,python訪問集合 相關圖片python集合元素訪問cookies的值比其他ASP集合(如form和ServerVariables)的值復雜得多。cookie是瀏覽器存儲在客戶機系統上的一小段文本,與每個請求一起緊急頁面升級 每天正常訪問...

  • 數據庫和程序如何連接,數據庫的連接

    數據庫和程序如何連接,數據庫的連接 相關圖片數據庫連接失敗在網上搜索大量的信息,經過他們不懈的努力,終于測試成功。最初,您需要在服務器上安裝MySQL ODBC 3.51以及數據庫用戶名和密碼。使用以下密碼。以下是引用web怎么連...

  • 設置服務器時間,怎么設置時間服務器

    設置服務器時間,怎么設置時間服務器 相關圖片如何防止服務器更改時間具體如下:這里,strftime函數主要用來實現這個函數,代碼非常簡單,如下:12$today=date('y-m-d-g');$today=strftime(gdc服務器調整時間密碼...

  • php獲取網頁內容,php獲取網頁源碼

    php獲取網頁內容,php獲取網頁源碼 相關圖片php訪問網頁本文的示例描述了PHP如何獲取web頁面上的所有鏈接。與您分享以供參考。具體實現方法如下:代碼如下:?Phpfunction get all URL($code獲取網頁html...

熱評文章

  • access數據庫窗體代碼,access代碼實現數據庫另存

    access數據庫窗體代碼,access代碼實現數據庫另存 相關圖片access數據庫查詢首先,如果您只是將access數據庫的后綴更改為。直接用ASP,你不能阻止下載。正確的方法是創建一個表并為這個表編寫二進制文件,即OLE對象。具體代碼如下:%d連接ac...

  • asp開發實例,asp入門實例

    asp開發實例,asp入門實例 相關圖片aspnet開發實例asp程Request.QueryString請.Form實Request.QueryString獲url傳Request.Form是33719;contrachtml5 asp...

  • orecal數據庫,數據庫有哪些

    orecal數據庫,數據庫有哪些 相關圖片msde數據庫選擇打印報告樣式并單擊“下一步”。現在要為新數據庫指定標題。在對話框上方的文本框中,輸入客戶訂單數據庫。對話框中的名稱是新數據庫條目窗體上的標題字,即打開...

  • asp如何和數據庫連接,asp能用什么數據庫

    asp如何和數據庫連接,asp能用什么數據庫 相關圖片asp數據庫查詢MySQL數據庫教程的連接方法:set adocon=server。創建對象(ADODB。連接)adocon。Opendriver={MySQL};數據庫=yoasp添加一條數據庫...

  • 數據庫定義,數據庫有哪些類型

    數據庫定義,數據庫有哪些類型 相關圖片數據庫功能“文件新建數據庫”對話框出現在屏幕上,提示應為已建立的數據庫文件命名以及應將其保存在計算機中的目錄。在文件名右側的文本框中輸入數據庫名稱,然后單擊左上角...

  • 自動分頁,表格自動分頁

    自動分頁,表格自動分頁 相關圖片word自動分頁怎么設置問題:在每頁打印一定數量的行后,自動分頁方法1:添加分頁符,并在報表的代碼接口中編寫以下代碼:optioncomparedatabase dimrowaslon表格內容多了自動分頁...

  • access 壓縮和修復數據庫,如何壓縮數據庫

    access 壓縮和修復數據庫,如何壓縮數據庫 相關圖片下面不是壓縮和修復數據庫的作用Access數據庫在長期使用后容易過大和損壞。Microsoft office軟件中的Access具有修復和壓縮功能。具體操作分為以下兩個步驟:1。打開你的。M不屬于壓縮和...

  • fx2n 2ad程序實例,伺服電機控制程序實例

    fx2n 2ad程序實例,伺服電機控制程序實例 相關圖片plc控制程序在此實例中,將創建包含條件的宏組來驗證密碼。如果密碼正確,請先關閉“身份驗證”窗口,然后打開另一個窗口。如果密碼不正確,將出現一個要求重新輸入密碼的消息...

  • 使用方法,示波器使用方法步驟

    使用方法,示波器使用方法步驟 相關圖片示波器的使用方法在access中,應用程序對象有兩個未公開的方法,一個是另存為文本,另一個是從文本加載。我記得我只是在學習訪問。當我研究FMS分析工具時,我發現它總是產生一些...

  • 控件內的對齊方式,控件對齊方式

    控件內的對齊方式,控件對齊方式 相關圖片iapp控件對齊方式對齊是最常用的布局方法之一,您可能已經掌握了它。假設有4個控件左對齊右對齊。假設有4個控件與頂部對齊,與底部對齊。如果所選控件在對齊后可能重疊,Microso...

關注微信

变脸官网查询