Chinaunix首页 | 论坛 | 博客
  • 博客访问: 850110
  • 博文数量: 117
  • 博客积分: 2595
  • 博客等级: 少校
  • 技术积分: 1204
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-18 18:16
文章分类

全部博文(117)

文章存档

2013年(1)

2012年(2)

2011年(18)

2010年(95)

2009年(1)

分类: 系统运维

2010-07-28 18:01:14

ASP 关于response.write 写javascript和 response.redirect("list.asp")有一个冲突,今天我才搞懂!

首先看下面两段代码,如果你能看出区别所在,那你就明白了..

第一个代码:

 response.write ""
response.Redirect("list.asp")
response.End()





第二个代码:

 response.write "language="javascript">window.alert(""id "&id&"不是一个有效的值 "");location=""list.asp"""

response.End()






很相似,第一个有response.redirect,第二个是用的js的document/window(两个都行).location方法,但是真正能够弹出alert警告,再跳转的是哪个呢??你猜猜

是第二个. why? 因为script的写法有错误,在第一个例子中,script没有执行,就执行response.redirect方法了,但是第二个的script和第一个的script的写法其实是一样的,两个双引号和一个的作用都一样.真正的错误在 script后应该加上 type="text/javascript" ,我很郁闷,少了这个为什么就执行有问题呢?但是第二个又正确执行了....
一些情况下正确,一些情况下错误??



总结:为避免通过response.write写 javascript的代码而导致的警告不显示就直接跳转的错误,有两种办法,一是在script后加上 type="text/javascript"
二是script标签后什么都不加...

这样两种代码就一样了..
以下两种代码就没问题了,但是还是推荐完整点,推荐第一种..

response.write ""
response.Redirect("list.asp")
response.End()



===============================================
我想我还是错了...
刚才查看了 google: 
等关于response.Redirect    alert的搜索,,,我才知道真正愿意说你什么了..

原来response.redirect是服务器行为,alert是客户端行为,既然在服务器执行了,服务器那边是不会alert的,会先吧最终的页面发送到客户端,就是response.redirect方法
然后页面就跳转了,刚才的alert就不会执行了...
看来以后不能再用着万恶的response.redirect 方法了......替代方法还是有的,,无非就是页面跳转么...

用这个:server.Transfer("filename.asp")
或者还是用response.write "language="javascript">window.alert(""id "&id&"不是一个有效的值 "");location=""list.asp""" ...

其实有没有那个 type=text/javascript 区别不太大吧...

参考链接
:

如何在Response.Redirect前弹出alert对话框




<script type="text/javascript">
    window.open("");
</script>

上面这个js 代码可以弹出一个弹窗...
并且,这个页面继续运行...


===================================================================

靠........

用server.transfer 有的页面有问题......

我又全部替换为 response.redirect了..

以后只要注意,,使用 alert后不要使用response.redirect跳转就行了...
阅读(10855) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

a525274592010-08-07 21:08:18

在双引号中间,两个引号和一个单引号的作用是一样的. 的确,直接就可以了... 用VBscript,在双引号中间,可以使用单引号的... 如果不是在双引号中间,单引号就是注释了...

chinaunix网友2010-07-29 23:18:58

说错了(你用VBS做ASP语言的话)应该将‘改为\'或\"

chinaunix网友2010-07-29 23:14:17

response.write "" 你第一个里面双引号不对吧将两个""改为一个‘试试吧,而且页面默认就是支持javascript的直接将Language='javascript'去掉都没问题的!