初学ASP时遇到的一些问题

1、从数据库中取出字符串显示出来,使用server.htmlencode(str)将串中的双引号等正常显示。

2、将字符串存和数据库中,应使用trim()去掉首尾空格,再使用replace(str, " ' ", " ' ' ")将一个双引号以两   个双引号代替,注解:括号内(操作串,两个双引号中间一个单引号,两个双引号中间两个单引号)

3、Asp数据库操作调试方法,可以先将原文件代以随意字符,看是否能正常显示,若能够正常显示,则将原码恢复,存盘,在浏览器界面中点击右键,选择刷新(不要用浏览器工具栏中的 "刷新 "),如果是数据库错误通常这时就会显示错误原因及行数。注意:此方法不适用于调试函数。且是本机调试适用。
此方法可简述如下:编辑器Ctrl+a--> Ctrl+x--> 任意字符串--> Ctrl+s--> 浏览器:调用的页面正常显示--> 编辑器Ctrl+v或两个Ctrl+z--> Ctrl+s--> 浏览器右键刷新,查看错误信息。
2001.5.23

4、在Javascript中显示带双引号的字符串,调用str=replace(str, " " " ", " ' ' ")将一个双引号改为两个单引并显示出来。括号注解(操作串,四个双引号,两个双引号中间两个单引号)函数中用两个双引号表示一个单引号。单引号如何正常显示:单引号在javascript中正常显示。本例前提:字串是使用双引号括起来,如果字串以单引号括起来则调换过来。示例:alert( "This   is   a   sample: <%=str%> ")

5、报错:
Microsoft   VBScript   运行时错误   错误   '800a000d '  
类型不匹配:   'strcheck '  

原因:没有将对应函数的包含文件加入进去。

6、向数据库插入数据时,应将字串进行单引号变成两个单引号处理;在编辑时,应将从数据库取得的数据进行html编码显示,对于改后的数据同样进行单引号变成两个单引号处理;在html表单中进行传值时应使用未编码的字串做为名称,但显示时同样进行html编码处理。相关函数:html编码:serverhtml(str);一个单引号变为两个单引号:replace(str, " ' ", " ' ' "),注解:括号内(操作串,两个双引号中间一个单引号,两个双引号中间两个单引号)

7、奇怪问题:managetypetable.asp(行76)和managerweb.asp(行33)
在manageweb.asp中连接传值时从数据库中取出的数据无论是否进行html编码都可以正常显示列表,
但在managetypetable.asp中则必须使用html编码才可以正常显示列表。

8、使用querystring传值,空格后面的部分不能传过去?在manageweb.asp中加上html编码也是如此,但在managetypetable.asp中则能够传过去。
在使用 <a> </a> 创建连接时要将url以两个双引号括起来。最好先将字串赋到一个字串变量中去。
例如:
str2=strhtml(rs( "notesname "))
<td   width= "47% "   height= "22 "> <a   href= "formeditweb.asp?notesname1= <%=str2%> "> <%=str2%> </a> </td>

在能够传过去的情况下,要在html文档中显示出来,以input   type= "text "   为例
可以这样去写 <%str=rs( "name   space ")%>
<input   type= "text "   value= " <%=str%> "> ,注意value的引号是必须写的。 <textarea> str </textarea> 中不用写引号。

9、问题:有空格的字串如何正常存入到数据库中?
不用特殊设置,只要变量取得的字串正确就可以。在页面间传值参见上一条。

10、如何将表格中的默认字体设置为一个字体,而不是给每一个表格单元 <td> </td> 设定 <font> 属性。
可以用Dreamweaver编辑页面

11、使用VbScript的call   msgbox( "mystr ")报错:(本机)没有权限:   'MsgBox '   ;(放置其他机器上):Microsoft   VBScript   运行时错误   (0x800A0046)
/lweboffice/module/item/notebook/test.asp,   第   5   行

12、request( "字串名称 "),如果要用一个变量str= "字串 "取代括号中的内容,可写为request(str)
如有很多strx变量x为一个变值,可以使用str= "str "&i,i为循环变量,取得不同的串变量,在循环中再使用request(str)就可以取到strx的值。

13、做为初者范一些低级错误总是难免的,不过一定要有信心去排除这些错误,如果一时找不到纠错的办法,不防到网上去转一转,或者将问题先放一阵子,继续做其他的模块,说不定你过一会再看它就会有新的思路。

14、 <form> 中表单元素是如何实现传值的?
<form> 中很多表单元素,像 <input> 中有checkbox,radio,text;还有 <textarea> ,那么这么多种不同的表单元素是如何实现向下一个页面传值的呢?这个问题纠缠我很长时间,我翻了很多书都没有找到这方面的论述,让我感觉写书的人都认为我们都是天才;),现在就将我自己绕着大弯找到的密笈公布出来。方法其实很简单:给每一个表单元素都起一个名称,然后在下一个页面中使用request( "tabname ")就可以取出了。需要注意的是对应于每一种表单元素取值的对像是不同的,对于 <textarea> 取的值为输入框中的值; <input> 中text取到的值为value值或输入框中赋的值,radio取到的值为所选中表项的value值,而checkbox则是所选中表项的值是on还是off。
今天又和人学了一招,checkbox的实现没有像我的方法那么笨,可以将checkbox的valve赋值,如果是checked则该选项被赋value值,如果为unchecked则该项为空。这可比我一项一项的比较要轻松多了。
你可以用两个页面,一个生成表单,一个处理表单将你想看的值显示出来。
***1.asp
<form   method= "post "   action= "test2.asp ">
<input   type= "checkbox "   name= "t "   value= "12 ">
<input   type= "checkbox "   name= "t "   value= "10 ">
<input   type= "submit ">
</form>
***2.asp
<%response.write   "test "&request( "t ")
response.end%>
用这个例子看看到底传了些什么吧。答案:示例checkbox取值如下:test12,10
精典范例:
***firsts.asp
<form   action=second.asp   method= "post ">
<%strsql= "select   [id]   from   tabinfo "
'id是不规范的字段(和关键字冲突)所以要用[]括起来,如果以user,group等命名表名称时也如此。
set   rs=mscs.execute(strsql) 'mscs是已建立好的数据库连接
i=0
while   not   rs.eof '示例不完整,应在此前有一个if   rs.eof   then判断处理
%> <input   type= "checkbox "   name=infoid   value=rs( "id ")>  
'所列条目以同一个名称 "infoid "进行存储(以逗号间隔的字串,如果该项被选中则对应取值为rs( "id "))
'在下一页面中可以使用strinfo=spit(request( "infoid "), ", ",-1)将字串分配到数组strinfo(i)中
'i从零开始。
<%rs.movenext
wend%> <input   type=submit   value= "删除 "> </form>
***second.asp
<%strinfoid=request( "infoid ")
strsql= "delte   from   tabinfo   where   [id]   in   ( "&strinfo& ") "%> '删除在上一页中被选中的选项

15、学会自己探索是很好的,但对于已经很成熟的技术你应当学会去向别人请教,学习。更为重要的是你如果找不到什么都能问到的好老师,那你一定要学会去找一些精典的例程来看。学习他人的经验比自己的摸索要快的多,尤其是很多不必花费太多精力的小问题。

16、如何在ASP中调用javascript函数?
如果在IIS中设置默认的script是VBscript,则应在html中使用 <script   language=javascript> </script> 来调用javascript函数。

17、在javascript中可以使用 <%=var%> 来取得vb(asp)中的变量值。但如何将javascript中的值传递给VbScript?
javascript中的变量可以通过给调用的asp页面传值的方式进行传递。
managerid=30
location.replace( "nextpage.asp?manager= "+managerid)

18、注意在javascript中判断等式是使用 "== ",两个等号进行,而不是Vbscript中常用的一个等号。
如果在javascript中使用if   num=1,则if判断永远为真。

19、在页面中取出由checkbox传递的数组可以使用split函数,
示例:你可以用这个示例来做个测试。
dim   mystr
mystr=split(request( "check "), ", ",-1,1) ;request( "check ")为上一页面传过来的数组串。
for   each   i   in   mystr
response.write   i& " <br> "
next
注解:split中的四个参数分别是:request( "check ")以一定的格式组成的字符串; ", "以逗号做为字串的分隔符;返回子串的个数-1为所有的子串;最后的1表示进行文本比较,如果是0则进行二进制比较。

20、使用ole   db与sql   server建立链接。注:以大写字母开头或全部为大写字母的为系统项,一般不可更改,小写字母为自己可以改变的选项。分号 "; "后面的均为注释。
SET   cnn=SERVER.CreateObject( "AdoDb.connection ")           ;创建cnn对象
strcnn= "Driver={Sql   Server};Server=servername;Uid=sa;pwd=;DataBase=databasename "
cnn.open   strcnn
;以用户名 "sa ",密码 " "(无密码)与服务器 "servername "的 "databasename "数据库建立连接

21、如何以最简便的方式查询数据库?
strsql= "Select   *   From   mydatabase "
;sql的查询语句,从mydatabase数据库中查询出所有的数据(*)
set   rs=cnn(strsql) ;将查询结果集(RecordSet)赋给rs
IF   NOT   rs.eof   Then
;此处放置没有取上数据的处理语句,通常为错误提示
End   If
While   Not   rs.eof
;此处放置对查询到的结果数据集进行处理的语句
rs.movenext  
;千万别忘了这一句,用于将数据记录指针向下移动一个。没有这一句机器将进入死循环。重启吧!
Wend
循环语句还可以使用
Do   While   Not   rs.eof
Loop

22、sql中使用in语句,括号必须有。
例:select   *   from   where   userid   in(3,4,5)

23、使用javascript输入框传输变量。
var1=prompt( "请输入数据 ", " ")
location.replace( "nextpage.aps?inputdata= "+var1)

24、在javascript中常用的页面跳转语句:
location.replace( "nextpage.asp ") ;在当前窗口跳至另一个页面
history.back() ;返回上一页面
window.open( "newpage.asp ") ;在新窗口中打开一个页面

25、原始设想:在一个页面中使用同一个javascript函数实现两次页面跳转:第一个页面处理数据,第二个页面为自身进行刷新。
无法实现。原因:在同一个jvavscript的函数中只可以进行一次跳转。如下例所示:
;first.asp
<script   language=javascript>
function   change3(okla)
{
alert(okla);
okk=prompt( "dfkdf ", " ")
location.replace( "second.asp?name1=tt "); ;程序并不执行此句
alert( "second ");
location.replace( "second.asp?name1= "+okk+ "&thenum= "+okk); ;此句在最后被执行,?
;本句也可写为location= "second.asp?name1= "+okk+ "&thenum= "+okk
;符号&是页面传值连接符,而+是javascript的字符串连接符号。
alert( "third ");  
}
</script>
<input   type= "button "   value= "test "   οnclick= "change3( 'thefirst ') ">
<%thenum=request( "thenum ")%>
;second.asp
<input   tpye= "hidden "   value= " <%=request( "thenum ")%> "   name=thenum>
或者使用: <%response.redirect   first.asp?thenum=request( "thenum ")%>
遗留问题:点击 "test "后,显示顺序依次为thefirst,second,third和change.asp(name1=okk)页面,这样看来javascript并不是平常意义的编程语言,并不是顺序执行的,那执行顺序究竟是怎样的?
本题的正确解决方法:在本页面中用javascript进行页面跳转,使用另一页面进行数据处理,再转回初始页面进行刷新。在此过程中应注意进行页面间传值的方法。本例中的thenum就是在两个程序之间进行传送的变量。

21、在框架(frame)中使用javascript在本窗口(window)中调用另一个页面:   parent.location.replace(url);

22、mid(str,2)从字串strr的第二个字符开始取串
等效语句right(str,len(str)-1);相关函数:left(str,len(str)-1)
用处:将一个数组中的元素以逗号为分隔符合并成一个字串时,去掉第一个多加的逗号。
示例如下:
      Set   rsGroups=MSCS.Execute( "select   a.g_id   from   [alias_group]   a,[group]   g   where   a.[parent_id]= "&g_id& "   and   g.[id]=a.[child_id] ")
      do   while   not   rsGroups.EOF
            groups=groups& ", "&rsGroups( "g_id ")
            rsGroups.MoveNext
      loop
      getGroupsbyGroup=Mid(groups,2)

22、从数据库取了字串进行显示时(尤其是放入textarea中进行编辑),不要忘记使用server.htmlencode(str)对字串进行处理。如果不处理,在textarea中进行编辑会出现在第二行输入空格后本行的所有字符都跑到第一行。程序可.。能不能正常执行,报的错与textarea无关,且报错行会相差很远。

23、File   Access组件使用中的问题。
登录用户属于administrators组,可以对test目录进行完权控制。但test目录对于用户组users则只赋予了只读的权限,这种情况下无法使用createfolder创建目录。
给users赋予写入和修改权限后,可以创建folder。以上权限是指ntfs权限。

24、在客户端实现数据验证后提交表单的两种方法:
1)方法一
<script   laguage=javascript>
function   checkdata()
{
if   (frm.data1.value <> " ")
    {return   true;}
else
    {return   false;}
}
</script>
<from   name=frm   οnsubmit= "return(checkdate()) "   action= "nextpage.asp "   method= "post ">
<input   type= "submit "   value= "提交 ">
2)方法二:
<script   laguage=javascript>
function   checkdata()
{
if   (frm.data1.value <> " ")
    {frm.submit();}
else
    {frm.data1.forcuts();}
}
</script>
<from   name=frm   action= "nextpage.asp ">
<input   type= "button "   value= "提交 "   οnclick=checkdata()>

25、Vbscript中的逻辑判断,依据变量是否是非零值或逻辑值,但变量不能是字符串。

26、关于 <html> 标记通用属性的说明
id:可以给html标记加上一个id号,以方便控制,id不能以数字开头。
style:显示风格;cursor:hand表示鼠标移动至该元素上时,形如手状的图标显示其上,display:none表示本表项不显示。
例: <div   id= "ast "   style= "cusor:hand "> </div>
下面是一个简单的示例
<script   language=javascript>
function   turnit(aa)
{
if   (aa.style.display== " ")
{
aa.style.display= "none ";
}
else
{aa.style.display= " ";}
}
</script>
<div   style= "cursor:hand "   οnmοuseup= "turnit(a333) "   id= "tt ">
ok
<div>
<div   id= "a333 "   style= " "> this   is   a   test
</div>

27、风格板的简单使用
定义风格板
<STYLE   type= "text/css ">
.mystyle   {
COLOR:   #FCFCFC;   TEXT-DECORATION:   none;   FONT-FAMILY:   "宋体 ";   FONT-SIZE:   9pt
}
</STYLE>
使用风格板
<td   class= "mystyle ">

28、在 <select> 中排错时,如果是数据库错误,很有可能在界面中什么都看不到,再加入的其他界面元素也看不到。??

29、使用 <input   type=hidden   value= " <%=vartt%> "> 传输变量时,一定要记住将 <%%> 用双引号括起来。否则#¥*Z()+|);、

30、关于option   explicit的使用
程序中包含option   explicit,则在你的程序中所有使用的变量都必须先定义再使用。
但是报错不明确,只能给你一个http500错误,并不能指出是哪个变量未定义。不知还有什么更好的调试方法。
不推荐使用。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值