两个奇怪的问题,高手看看^_^ 你已经alert了 焦点到了弹出框了 下面语句当然不会执行了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 除非缓冲区已经打开,否则,在任何内容或标题返回给浏览器之前,您必须重定向浏览器。将 Response.Redirect 语句放在页的顶部和<HTML> 标记之前可确保没有任何内容返回给浏览器。如果在返回给浏览器的内容或标题后使用 Response.Redirect,将看到一个错误信息。 如果在页的中间使用 Response.Redirect,请将其与 Response.Buffer 属性一起使用,这是因为在默认情况下,Web 服务器返回 HTML 和在处理 ASP 页时的脚本处理结果。但是,您可以设置 Response 对象的 Buffer 属性以便在向用户发送任何内容之前,先处理页上的所有的服务器脚本命令。 可以使用缓冲技术来确定在页处理过程中的某个点,而您并不想将该点之前的内容发送给用户。也可以用 Response 对象的 Redirect 方法将用户重定向到另一页,或者用 Response 对象的 Clear 方法清除缓冲区并将不同的内容发送给用户Response.Redirect必须放在脚本或HTML之前处理。 1楼解释不对吧?那 function aaa(){ alert("asdasda"); var a=1; alert(a);}难道这句也是alert()完就不执行下面的吗?在JS里alert()常常作为调试脚本用。 关于第一个问题:你查看下你的css引用是否使用了相对路径,如果是那样的话,你提交之后处理并转发(不是重定向)到default.aspx后肯定会造成css文件无法找到的,这是你的url路径是你的提交路径。关于第二个问题:使用Response.Redirect进行重定向的原理是向客户端发送重定向命令使浏览器请求你要定向页面,这个过程是不允许有任何http输出的,因为http协议一次只能发送一种格式,发送命令就不能发送http内容,所以那种现象就很容易理解了。其实要实现你的功能,满可以用下面的方式来解决if (Request["UserName"] == null || Request["UserName"] == ""){ Response.Write("<script type=\"text/javascript\">" Response.Write("alert('您还没有登录,请先登录!')"); Response.Write("document.location.href='Login.aspx';"); Response.Write("</script>"); } 以下是我引用CSS的路径 <link rel="Stylesheet" type="text/css" href="css.css" />按您写的也没有用啊,报错了。是否写错了? response.buffer=false 关闭缓存区 response.buffer=true;打开 引用1段别人的 缓冲内容 默认情况下,Web 服务器返回 HTML 和在处理 ASP 页时的脚本处理结果。但是,您可以设置 Response 对象的 Buffer 属性以便在向用户发送任何内容之前,先处理页上的所有的服务器脚本命令。 可以使用缓冲技术来确定在页处理过程中的某个点,而您并不想将该点之前的内容发送给用户。也可以用 Response 对象的 Redirect 方法将用户重定向到另一页,或者用 Response 对象的 Clear 方法清除缓冲区并将不同的内容发送给用户。下面的例子使用了以上两种方法。 <% 'Turn on buffering. This statement must appear before the <HTML> tag. Response.Buffer = True %> <html> <body> %> If Request("FName") = "" Then Response.Clear Response.Redirect "/samples/test.html" Else Response.Write Request("FName") End If %> </body> </html> 也可以使用 Response.Buffer 避免 Web 服务器在脚本修改 HTTP 标题之前将其返回。有些属性和方法,例如 Response.Expires 和 Response.Redirect 可修改 HTTP 标题。 当在脚本中设置 Buffer 属性并且没有调用 Flush 方法时,服务器将保持用户发出的 Keep-Alive 请求。养成这样的脚本编写习惯有益于提高服务器的性能,因为,服务器不必为每一个用户请求创建新的连接(假定服务器、用户和任何代理服务器都支持 Keep-Alive 要求)。但是,这种方法的一个潜在的不利因素是:在用户处理完当前的 asp 文件的所有的脚本之前,缓冲区不显示任何响应给用户。对于较长的和较复杂的脚本,用户可能要被迫等待很长一段时间才能看到这一页。 默认情况下,缓冲区对于 ASP 应用程序是关闭的。可以使用 Internet 服务管理器为整个 ASP 应用程序打开缓冲区。详细信息,请参阅 配置 ASP 应用程序。 允许代理服务器缓存页 通过代理服务器,应用程序可以发送页给用户。代理服务器 代替用户浏览器从 Web 站点请求网页。代理服务器缓存 HTML 页以便相同页的重复请求能够快速有效地返回给浏览器。代理服务器执行请求并缓存网页,并减轻网络和 Web 服务器的负荷。 尽管缓存对 HTML 页都能很好运行,但对包含动态生成信息的 ASP 页则不尽人意。例如,报告股市行情或显示大量业务的存货清单需要提供即时信息。一小时前的信息对目前来讲是很不准确的。如果应用程序返回个人的信息,例如,自定义的主页,希望用户不能看到另一个用户的个人信息。 默认情况下,ASP 命令代理服务器自己不能缓存 ASP 页(尽管缓存图像、位图、小型应用程序,和其他缓存页上的参考项)。可以使用 Response.CacheControl 属性设置缓存控制 HTTP 标题字段允许缓存某一页。Response.CacheControl 的默认值是字符串 "Private",它避免代理服务器缓存此页。要允许缓存,可将缓存控制标题字段设置为 Public: <% Response.CacheControl = "Public" %> 因为在任何页的内容被发送之前,HTTP 标题必须被送给浏览器或代理服务器,所以,可在任何 HTML 标记之前设置 Response.CacheControl 属性或使用 Response.Buffer 缓存此页。 缓存控制标题字段是 HTTP 1.1 规格的一部分。在只支持 HTTP 1.0 的代理服务器上不能缓存 ASP 页,因为没有到期的标题字段发送。 避免浏览器缓存页 每一个浏览器版本都有它自己的规格来规定是否缓存页。要避免浏览器缓存 ASP 页,可使用 Response.Expires 设置到期标题: <% Response.Expires = 0 %> 值为 0 强迫缓存页到期。因为在任何页被发送之前,HTTP 标题必须被送给浏览器,所以可通过将 Response.Expires 属性放在 HTML 标记之前或使用 Response.Buffer 缓存该页。 1.你应该把css的引用写成相对于根路径的绝对路径比如:<link rel="Stylesheet" type="text/css" href="/ui/css/css.css" />2.按您写的也没有用啊,报错了。是否写错了?因为你是用.net后台逻辑输出的js代码,我无法调试,难免有语法错误。我的思路是你用后台的程序输出一条javascript语句,用js来实现页面的跳转。有可能是有些字符被转义了if(Request["UserName"]==null||Request["UserName"]==" "){ Response.Write( "<script type=\"text/javascript\">" Response.Write( "alert( '您还没有登录,请先登录')"); Response.Write( "document.location.href= 'Login.aspx';"); Response.Write( "</script>"); } Response.Write("<script language='JavaScript'>alert('您还没有登录,请先登录!');location.href='Login.aspx.aspx';</script>");要跳转得这样写,前2天我也是犯了正好错误,用过了就知道了 上面的问题还没有解决,新的问题又出来了。我在自己机器上调试的布局和发布后用别的机器浏览的布局不一样,CSS又失效了。我机器用的是IE7.0,调试机器用的是IE6.0。看来要加分了^_^ . if (Request[ "UserName "] == null || Request[ "UserName "] == " "){ Response.Write( " <script type=\ "text/javascript\ "> alert( '您还没有登录,请先登录! '); document.location.href= '~/Login.aspx '; </script> "); } Response.Write(" <script language=" + "javascript" + ">alert('" + "您还没有登录,请先登录!" + "');location.href='想要跳转的页面'; </script>");这样写试试看 if (Request[ "UserName "] == null || Request[ "UserName "] == " "){ Response.Write( " <script type=\ "text/javascript\ "> " Response.Write( "alert( '您还没有登录,请先登录! ') "); Response.Write( "document.location.href= 'Login.aspx '; "); Response.Write( " </script> "); } 关于繁简体转换时iframe的内容转换问题 JQ控制显示隐藏 求一方法获取字符的坐标,在线等 请教自动增行中对自动行如何删除 求一段天气预报,随着IP变的!!!!高分 请问如何将网页中的数据获取下来,保存到本地? 希望大侠出手相助!!! 各位大虾!今天有海鲜吃了.要大家帮忙啦,有关JS、数据库和iframe 进来讨论下,大家都提高提高!(循环变量) 使用title做出tips效果时,如何使增加tips停留时间? 用js做的遮罩层 一个网页元素移动位置的问题 文本框的值如何实现实时关联
Response.Redirect必须放在脚本或HTML之前处理。
那
function aaa()
{
alert("asdasda");
var a=1;
alert(a);
}
难道这句也是alert()完就不执行下面的吗?
在JS里alert()常常作为调试脚本用。
你查看下你的css引用是否使用了相对路径,如果是那样的话,你提交之后处理并转发(不是重定向)到default.aspx后肯定会造成css文件无法找到的,这是你的url路径是你的提交路径。关于第二个问题:
使用Response.Redirect进行重定向的原理是向客户端发送重定向命令使浏览器请求你要定向页面,这个过程是
不允许有任何http输出的,因为http协议一次只能发送一种格式,发送命令就不能发送http内容,所以那种现象就很容易理解了。其实要实现你的功能,满可以用下面的方式来解决
if (Request["UserName"] == null || Request["UserName"] == ""){
Response.Write("<script type=\"text/javascript\">"
Response.Write("alert('您还没有登录,请先登录!')");
Response.Write("document.location.href='Login.aspx';");
Response.Write("</script>");
}
缓冲内容
默认情况下,Web 服务器返回 HTML 和在处理 ASP 页时的脚本处理结果。但是,您可以设置 Response 对象的 Buffer 属性以便在向用户发送任何内容之前,先处理页上的所有的服务器脚本命令。
可以使用缓冲技术来确定在页处理过程中的某个点,而您并不想将该点之前的内容发送给用户。也可以用 Response 对象的 Redirect 方法将用户重定向到另一页,或者用 Response 对象的 Clear 方法清除缓冲区并将不同的内容发送给用户。下面的例子使用了以上两种方法。
<%
'Turn on buffering. This statement must appear before the <HTML> tag.
Response.Buffer = True %>
<html>
<body>
%>
If Request("FName") = "" Then
Response.Clear
Response.Redirect "/samples/test.html"
Else
Response.Write Request("FName")
End If
%>
</body>
</html>
也可以使用 Response.Buffer 避免 Web 服务器在脚本修改 HTTP 标题之前将其返回。有些属性和方法,例如 Response.Expires 和 Response.Redirect 可修改 HTTP 标题。
当在脚本中设置 Buffer 属性并且没有调用 Flush 方法时,服务器将保持用户发出的 Keep-Alive 请求。养成这样的脚本编写习惯有益于提高服务器的性能,因为,服务器不必为每一个用户请求创建新的连接(假定服务器、用户和任何代理服务器都支持 Keep-Alive 要求)。但是,这种方法的一个潜在的不利因素是:在用户处理完当前的 asp 文件的所有的脚本之前,缓冲区不显示任何响应给用户。对于较长的和较复杂的脚本,用户可能要被迫等待很长一段时间才能看到这一页。
默认情况下,缓冲区对于 ASP 应用程序是关闭的。可以使用 Internet 服务管理器为整个 ASP 应用程序打开缓冲区。详细信息,请参阅 配置 ASP 应用程序。
允许代理服务器缓存页
通过代理服务器,应用程序可以发送页给用户。代理服务器 代替用户浏览器从 Web 站点请求网页。代理服务器缓存 HTML 页以便相同页的重复请求能够快速有效地返回给浏览器。代理服务器执行请求并缓存网页,并减轻网络和 Web 服务器的负荷。
尽管缓存对 HTML 页都能很好运行,但对包含动态生成信息的 ASP 页则不尽人意。例如,报告股市行情或显示大量业务的存货清单需要提供即时信息。一小时前的信息对目前来讲是很不准确的。如果应用程序返回个人的信息,例如,自定义的主页,希望用户不能看到另一个用户的个人信息。
默认情况下,ASP 命令代理服务器自己不能缓存 ASP 页(尽管缓存图像、位图、小型应用程序,和其他缓存页上的参考项)。可以使用 Response.CacheControl 属性设置缓存控制 HTTP 标题字段允许缓存某一页。Response.CacheControl 的默认值是字符串 "Private",它避免代理服务器缓存此页。要允许缓存,可将缓存控制标题字段设置为 Public:
<% Response.CacheControl = "Public" %>
因为在任何页的内容被发送之前,HTTP 标题必须被送给浏览器或代理服务器,所以,可在任何 HTML 标记之前设置 Response.CacheControl 属性或使用 Response.Buffer 缓存此页。
缓存控制标题字段是 HTTP 1.1 规格的一部分。在只支持 HTTP 1.0 的代理服务器上不能缓存 ASP 页,因为没有到期的标题字段发送。
避免浏览器缓存页
每一个浏览器版本都有它自己的规格来规定是否缓存页。要避免浏览器缓存 ASP 页,可使用 Response.Expires 设置到期标题:
<% Response.Expires = 0 %>
值为 0 强迫缓存页到期。因为在任何页被发送之前,HTTP 标题必须被送给浏览器,所以可通过将 Response.Expires 属性放在 HTML 标记之前或使用 Response.Buffer 缓存该页。
<link rel="Stylesheet" type="text/css" href="/ui/css/css.css" />2.按您写的也没有用啊,报错了。是否写错了?
因为你是用.net后台逻辑输出的js代码,我无法调试,难免有语法错误。
我的思路是你用后台的程序输出一条javascript语句,用js来实现页面的
跳转。有可能是有些字符被转义了
if(Request["UserName"]==null||Request["UserName"]==" "){
Response.Write( "<script type=\"text/javascript\">"
Response.Write( "alert( '您还没有登录,请先登录')");
Response.Write( "document.location.href= 'Login.aspx';");
Response.Write( "</script>");
}
要跳转得这样写,前2天我也是犯了正好错误,用过了就知道了
Response.Write( " <script type=\ "text/javascript\ "> alert( '您还没有登录,请先登录! '); document.location.href= '~/Login.aspx '; </script> ");
}
Response.Write( " <script type=\ "text/javascript\ "> "
Response.Write( "alert( '您还没有登录,请先登录! ') ");
Response.Write( "document.location.href= 'Login.aspx '; ");
Response.Write( " </script> ");
}