response.redirect()不执行

merui 2011-11-06 01:20:26
写一个简单的注册页面,
想让注册成功后跳转到下一个页面,可是不管用,
一个是注册页面,defalut是用来判断和写入数据库的页面
logo是注册后想跳入的页面。
实现不了,
注册页面代码:

<%@ Page Language="C#" Debug="true" AutoEventWireup="true" CodeFile="regest.aspx.cs" Inherits="regest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function checkName() {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var name = document.getElementById("username").value;
if (name == null) {
alert("用户名为空");
return;
}
var url = "Default.aspx?name="+escape(name)+"&type=checkName";
xmlhttp.open("get", url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
document.getElementById('span1').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
}
function sub_onclick() {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var name = document.getElementById("username").value;
var pass = document.getElementById("password").value;
var email = document.getElementById("email").value;
var url = "Default.aspx?name="+escape(name)+"&password=" + escape(pass) + "&email=" + escape(email) + "&type=submit";
xmlhttp.open("get", url, true);
xmlhttp.send(null);
}

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<caption>
用户注册
</caption>
<tr>
<td>
<label for="username">用户名</label>
</td>
<td>
<input type="text" name="username" id="username" onchange="checkName()"/>
</td>
<td style="color:Red">
<span id="span1"></span>
</td>
</tr>
<tr>
<td>
<label for="password">密码</label>
</td>
<td>
<input type="password" id="password" runat="server" />
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="密码为空" ControlToValidate="password"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<label>电子邮件</label>
</td>
<td>
<input type="text" id="email" runat="server"/>
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="邮箱为空" ControlToValidate="email"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ControlToValidate="email" ID="RegularExpressionValidator1" runat="server" ErrorMessage="输入格式错误" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" id="sub" value="注册" onclick="sub_onclick()" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>


defalut页面代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{


protected void Page_Load(object sender, EventArgs e)
{
string type = Request["type"];
if (type == "checkName")
{
string Name = Request["name"];
CMyConnection name = new CMyConnection();
string sqlstr = "select * from users where username='"+ Name+"'";
if (name.doSelect(sqlstr, "userna").Tables["userna"].Rows.Count!=0)
{
Response.Clear();
Response.Write("用户名已存在");
Response.End();
}
else
{
Response.Clear();
Response.Write("");
Response.End();
}
}
if (type == "submit")
{
string Name = Request["name"];
string password = Request["password"];
string email = Request["email"];
string sqlinsert = "insert into users(username,password,email)values('" + Name + "','" + password + "','" + email + "')";
CMyConnection submit = new CMyConnection();
submit.doInsert(sqlinsert);
Response.Redirect("logo.aspx");
}
}
}
...全文
199 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
merui 2011-11-08
  • 打赏
  • 举报
回复
不管用[Quote=引用 7 楼 taomanman 的回复:]

引用 6 楼 merui 的回复:

这句没有问题,数据成功写入数据库,没有页面跳转,也不报错引用 2 楼 taomanman 的回复:

报什么错了嘛?

string sqlinsert = "insert into users(username,password,email)values('" + Name + "','" + password + "','" + email ……
[/Quote]
merui 2011-11-08
  • 打赏
  • 举报
回复
那应该怎么写好呢?我是新手[Quote=引用 11 楼 esinzhong 的回复:]

LZ你是用AJAX异步请求,所有Response.Redirect("logo.aspx")在界面上已经看不到跳转了。像这种方式你应用javascript来做跳转。

还有,我不赞同你的程序,还停留在asp.net 1.1的时代。
[/Quote]
whzh719 2011-11-08
  • 打赏
  • 举报
回复
后台的跳转,看不到。
whzh719 2011-11-08
  • 打赏
  • 举报
回复
sub_onclick()
你是通过来提交到数库的。后台是不会跳转。
Sing-Z 2011-11-08
  • 打赏
  • 举报
回复
改改这里

if (type == "submit")
{
string Name = Request["name"];
string password = Request["password"];
string email = Request["email"];
string sqlinsert = "insert into users(username,password,email)values('" + Name + "','" + password + "','" + email + "')";
CMyConnection submit = new CMyConnection();
submit.doInsert(sqlinsert);
//Response.Redirect("logo.aspx"); //不在这里跳转
Response.Write("true"); //返回一个值,让JS捕捉并判断是否跳转
Response.End();
}
}

再修改regest.aspx页Javasciprt

var name = document.getElementById("username").value;
var pass = document.getElementById("password").value;
var email = document.getElementById("email").value;
var url = "Default.aspx?name="+escape(name)+"&password=" + escape(pass) + "&email=" + escape(email) + "&type=submit";
//定义AJAX回调事件
xmlhttp.onreadystatechange=function(){
var re=xmlhttp.responseText;
alert(re);//提示一下看看返回值是什么
if(re=='true')
window.location.href='logo.aspx';//跳转到目标页
};

xmlhttp.open("get", url, true);
xmlhttp.send(null);



[Quote=引用 12 楼 merui 的回复:]

那应该怎么写好呢?我是新手引用 11 楼 esinzhong 的回复:

LZ你是用AJAX异步请求,所有Response.Redirect("logo.aspx")在界面上已经看不到跳转了。像这种方式你应用javascript来做跳转。

还有,我不赞同你的程序,还停留在asp.net 1.1的时代。
[/Quote]
Houkouki 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 afu45 的回复:]

Response.End(); 去掉
[/Quote]
WJY_123456 2011-11-08
  • 打赏
  • 举报
回复
打断点调试,看看是不是没有触发事件
Sing-Z 2011-11-06
  • 打赏
  • 举报
回复
LZ你是用AJAX异步请求,所有Response.Redirect("logo.aspx")在界面上已经看不到跳转了。像这种方式你应用javascript来做跳转。

还有,我不赞同你的程序,还停留在asp.net 1.1的时代。
子在川上笑 2011-11-06
  • 打赏
  • 举报
回复
Response.End()作用是执行完它之前的内容,后面的所有内容都不会再绘制了!把它去掉吧!
afu45 2011-11-06
  • 打赏
  • 举报
回复
Response.End(); 去掉
黄亮 2011-11-06
  • 打赏
  • 举报
回复
Response.End();
之后就结束了
暖枫无敌 2011-11-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 merui 的回复:]

这句没有问题,数据成功写入数据库,没有页面跳转,也不报错引用 2 楼 taomanman 的回复:

报什么错了嘛?

string sqlinsert = "insert into users(username,password,email)values('" + Name + "','" + password + "','" + email + "')";

连个空格都没有
s……
[/Quote]

把下面的这些个去掉

Response.End();

merui 2011-11-06
  • 打赏
  • 举报
回复
这句没有问题,数据成功写入数据库,没有页面跳转,也不报错[Quote=引用 2 楼 taomanman 的回复:]

报什么错了嘛?

string sqlinsert = "insert into users(username,password,email)values('" + Name + "','" + password + "','" + email + "')";

连个空格都没有
string sqlinsert = "insert into users(username,passwor……
[/Quote]
merui 2011-11-06
  • 打赏
  • 举报
回复
是同一级的[Quote=引用 1 楼 nevermore_0923 的回复:]

Response.Redirect("logo.aspx");
logo.aspx和default.aspx在同一级吗?

路径有问题吧。
[/Quote]
  • 打赏
  • 举报
回复
断点跟踪
ycproc 2011-11-06
  • 打赏
  • 举报
回复
跳转没跳转不是取决你最上面说
而是你跟踪调试后的结果
暖枫无敌 2011-11-06
  • 打赏
  • 举报
回复
报什么错了嘛?

string sqlinsert = "insert into users(username,password,email)values('" + Name + "','" + password + "','" + email + "')";

连个空格都没有
string sqlinsert = "insert into users(username,password,email) values('" + Name + "','" + password + "','" + email + "')";

你这打个断点,跟踪一下,30秒发现问题。
弦弦 2011-11-06
  • 打赏
  • 举报
回复
Response.Redirect("logo.aspx");
logo.aspx和default.aspx在同一级吗?

路径有问题吧。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧