Asp開發(fā) 聯(lián)通CDMA
以下是在開發(fā)wap中的隨筆,其中一些對(duì)于“老鳥”來說,談不上什么,希望對(duì)初學(xué)者有所幫助,大家有什么小技巧,歡迎頂上來。共同學(xué)習(xí)、共同進(jìn)步 ^-^ 1、iis配置Wap環(huán)境 在作為wap站點(diǎn)的屬性-->Http頭-->MIME映射中添加新的文件類型,具體如下: 關(guān)聯(lián)文件名 內(nèi)容類型 wml text/vnd.wap.wml wmlc application/vnd.wap.wamlc wmls text/vnd.wap.wmlscript wmlsc application/vnd.wap.wmlscript wbmp image/vnd.wap.wbmp 編寫一個(gè)wml文件或者使用asp編寫一個(gè)動(dòng)態(tài)網(wǎng)頁(yè) 如果使用asp編寫,在源碼的開始添加 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <%Response.ContentType = "text/vnd.wap.wml; charset=utf-8"%> 編碼采用utf-8 就可以使用模擬器進(jìn)行瀏覽了。 2、wap中的編碼比較嚴(yán)格,標(biāo)簽區(qū)分大小寫。標(biāo)簽一定要對(duì)應(yīng)。初學(xué)者經(jīng)常犯這樣的錯(cuò)誤 3、說到標(biāo)簽對(duì)應(yīng)就涉及到這樣一個(gè)問題。當(dāng)在一個(gè)表中查詢記錄的時(shí)候,在asp中沒有記錄就輸出“沒有記錄提示”并response.end。但是在wap中不行,因?yàn)檫@樣就不會(huì)輸出</card></wml>等閉合標(biāo)簽。 我采用的方法是。得到記錄集后 。 。
if rs.eof then Wrong="暫時(shí)沒有記錄。。。" else '正常的進(jìn)行頁(yè)面顯示。。。。。 end if respong.write Wrong 。 </p> </card> </wml> 這樣可以避免標(biāo)簽不閉合。 4、圖片下載中首先一定要做到 a、圖片格式要正確:有的手機(jī)支持png 有的支持gif、bmp、jpg 。(聯(lián)通CDMA的大部分都支持png) b、圖片的路徑要正確:絕對(duì)路徑 比如http://****/PicDown/aa.png c、圖片的大小要適當(dāng):預(yù)覽的圖片不能超過10kb,供下載的圖片不能超過30kb。(這個(gè)我也不知道有沒有標(biāo)準(zhǔn),這是我在實(shí)際測(cè)試中得到的數(shù)據(jù)),下載有些手機(jī)支持圖片或者鈴聲可能還要大 <50kb,但是為了照顧大多數(shù)手機(jī)所以,建議<30kb。 d、圖片的大小一定要和圖片的名稱對(duì)應(yīng),也就是說 aa.png是多么大,在其size中就寫多么大,這兩個(gè)是對(duì)應(yīng)的。 e、有的手機(jī)在手機(jī)內(nèi)存儲(chǔ)圖片達(dá)到一定數(shù)量時(shí)候,就會(huì)提示“下載個(gè)數(shù)過多”等類似提示,有的手機(jī)有預(yù)覽-->保存(如:MOTO)有的沒有,下載后直接保存到手機(jī)中(LG8180)。 f、判斷用戶下載是否成功,可以在指定的文件中獲得Status,if Status=‘ok’ 則表明下載成功,進(jìn)行提示下載成功、下載次數(shù)+1等操作,否則,提示下載失敗。 5、wap中的分頁(yè) 分頁(yè)和web中是一樣的,只是有些功能比較簡(jiǎn)化了,下面是常用的分頁(yè),沒有寫成函數(shù)是方便大家修改。
在打開記錄集后寫,如下代碼:
<% filepath=request.servervariables("path_info")%> <%page=1 page=request("page") rs.PageSize = 8 '每頁(yè)的記錄的條數(shù) if Not IsEmpty(trim(Request("Page"))) then Page = CInt(Request("Page")) if Page > rs.PageCount then rs.AbsolutePage = rs.PageCount elseif Page <= 0 then Page = 1 else rs.AbsolutePage = Page end if End if %>
然后再想顯示分頁(yè)的地方,一般是在記錄集循環(huán)輸出完畢的后面寫:
<%if rs.pagecount<>1 and rs.pagecount<>0 then%> <br/> <%if page>rs.pagecount then%> <a title="確定" href="<%=filepath%>?Page=<% =page -1 %>">上一頁(yè)</a> <%else%> <%if page<>1 then %> <a title="確定" href="<%=filepath%>?Page=<% =page -1 %>">上一頁(yè)</a><br/> <% end if %> <a title="確定" href="<%=filepath%>?Page=<% = page + 1%>">下一頁(yè)</a> <%end if %> <%end if response.Write "第"&page&"頁(yè) 共"&rs.pagecount&"頁(yè)" %>
注意顯示的時(shí)候首先顯示下一頁(yè),然后再顯示上一頁(yè)這和web上的習(xí)慣不太一樣。
另外,如果這頁(yè)的內(nèi)容是顯示是通過上頁(yè)傳送來的參數(shù),作為條件的,則在 類似 <a title="確定" href="<%=filepath%>?Page=<% = page + 1%>">下一頁(yè)</a> 的地方都要加上該參數(shù),否則進(jìn)行下一頁(yè)連接的時(shí)候就會(huì)把參數(shù)丟掉。 例如:從上頁(yè)用戶選擇的新聞的種類,來顯示新聞。在List.asp頁(yè)面首先寫,NewType=request.form("NewType")得到用戶選擇的新聞的類型。 然后SQL="Select ..........where NewType='"&NewType&"'" 。完成記錄集合的準(zhǔn)備工作。注意:在進(jìn)行下頁(yè)面的時(shí)候要寫成 <a title="確定" href="<%=filepath%>?Page=<% =page -1 %>&NewType=<%=NewType%>">上一頁(yè)</a><br/>, 這樣的形式,有多少條件后面跟多少條件。 但是這樣就產(chǎn)生問題了,即時(shí)這樣寫NewType=request.form("NewType")也得不到NewType的值。所以在頁(yè)首剛開始的地方應(yīng)該寫成NewType=request("NewType")。就可以實(shí)現(xiàn)把參數(shù)帶到下一頁(yè)的連接中了。
wap中上一條、下一條的問題。
在開發(fā)中,新聞、笑話、下載等業(yè)務(wù)為用戶提供方便基本都需要在一條記錄完成后,再提供下一條記錄的操作,下面是簡(jiǎn)要的對(duì)下一條記錄實(shí)現(xiàn)方法的描述。
比如顯示新聞是國(guó)際新聞的記錄,list.asp來進(jìn)行顯示,通過sql語(yǔ)句select * from NewsInfo where type='國(guó)際' ,來得到符合條件的記錄集,用戶在瀏覽過程中,當(dāng)前記錄的id=10,下一條記錄的id是idnext=10+1=11,上一條記錄的id是idpre=10-1=9,然后<a href="list.asp?id='"&IdNext&"'">上一條</a>,這樣的做法是欠缺的,僅僅適用與id是連續(xù)的,也就是說所有國(guó)際新聞的id是連續(xù)的,如果國(guó)際新聞和國(guó)內(nèi)新聞在表中是穿插寫入的,那么你的id-1很可能是國(guó)內(nèi)新聞,條件限制type='國(guó)際' 就不起作用了。
正確且簡(jiǎn)練的做法應(yīng)該是這樣的(可能大家還有更好的做法):
當(dāng)前的id是IdNow,表NewsInfo是按照id自增的。 獲得idnext=select top 1 from NewsInfo where type='國(guó)際' and id>'"&IdNow&"' 獲得Idpre=select top 1 from NewsInfo where type='國(guó)際' and id<'"&IdNow&"' order by id desc
剩下的問題,就不用說了吧,注意,先顯示下一條,然后顯示上一條,這樣才方便用戶。
wap中新聞等圖片和文字混排
Wap開發(fā)中,圖片和文字混排,可以采用ubb編碼,原理就是自己定義一共特殊的格式,采用mid和replace函數(shù)進(jìn)行轉(zhuǎn)換。比如定義[img][/img],表示圖片的開始和結(jié)束。 但是要注意,web和wap中的區(qū)分。進(jìn)行以下替換 string1all = Replace(string1all,"[img]","</p><p align=""center""><img src=""../img/") string1all = Replace(string1all,"[/img]"," "" alt=""""/></p><p>")
會(huì)使得圖片居中顯示。
新聞小說的分頁(yè)
在wap中過長(zhǎng)的新聞和小說,會(huì)給大家?guī)砗艽蟮牟环奖恪K砸筮M(jìn)行分頁(yè)顯示,比如按照每頁(yè)顯示300字來舉例子。
pageWordNum=300 ' 每頁(yè)顯示的字?jǐn)?shù),這里300可以是變量 StartWord = 1 Length=len(Content) '要顯示內(nèi)容的總的長(zhǎng)度 PageAll=(Length+PageWordNum-1)\PageWordNum '該篇新聞總共可分的總頁(yè)數(shù)
i=request.QueryString("i") '第幾頁(yè)的標(biāo)記 if isnull(i) or i="" then '如果是新聞的剛開始則默認(rèn)i=0 i=0 end if Content = mid(Content,StartWord+i*PageWordNum,PageWordNum) '利用mid函數(shù)進(jìn)行新聞內(nèi)容的截。╩id函數(shù)的含義:從字符串中返回指定數(shù)目的字符)
。 。 。 <% '開始進(jìn)行分頁(yè)操作 if 0<=i<PageAll then if cint(i)<cint(PageAll)-1 then%> <a href="ListFengshuiInfo.asp?i=<%=i+1%>">下一頁(yè)</a><br/> <%end if if cint(i)>0 then%> <a href="ListFengshuiInfo.asp?i=<%=i-1%>">上一頁(yè)</a><br/> <%end if end if %>
結(jié)束。
注意:1、 <a href="ListFengshuiInfo.asp?i=<%=i+1%>">下一頁(yè)</a><br/>中ListFengshuiInfo.asp?i=<%=i+1%>可以按照你的實(shí)際環(huán)境的需要添加變量。 2、Mid函數(shù)的解釋說明: 從字符串中返回指定數(shù)目的字符。 Mid(string, start[, length]) 參數(shù) string 字符串表達(dá)式,從中返回字符。如果 string 包含 Null,則返回 Null。 Start string 中被提取的字符部分的開始位置。如果 start 超過了 string 中字符的數(shù)目,Mid 將返回零長(zhǎng)度字符串 ("")。 Length 要返回的字符數(shù)。如果省略或 length 超過文本的字符數(shù)(包括 start 處的字符),將返回字符串中從 start 到字符串結(jié)束的所有字符。
經(jīng)典論壇討論貼: http://m.95time.cn/bbs/NewsDetail.asp?lp=1&id=1658516
出處:藍(lán)色理想
責(zé)任編輯:moby
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|