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 区别不太大吧...
参考链接
:
<script type="text/javascript">
window.open("");
</script>
|
上面这个js 代码可以弹出一个弹窗...
并且,这个页面继续运行...
===================================================================
靠........
用server.transfer 有的页面有问题......
我又全部替换为 response.redirect了..
以后只要注意,,使用 alert后不要使用response.redirect跳转就行了...
阅读(10894) | 评论(3) | 转发(0) |