2014-09-03 37 views
0

我正在努力解决这个问题,我是新来的经典asp和javascript。希望有人能帮我解决这个问题。我想查看的main.asp中的Response.Write(或结果),但每次我试试这个,它进入pass.asp(在另一页):(我想要结果转到主页

这里是我的代码。main.asp

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

<html> 
<head> 
<script> 
function validate() { 
document.getElementById("RegDiv").innerHTML =pass.asp; 
} 
</script> 
<style> 
#RegDiv { 
color:blue; 
} 

</style> 
</head> 

<form name="RegForm" action="reg.asp" method="post" onsubmit="return validate();" /> 
<table border="1"> 
<tr><td>First Name:</td> 
<td><input type="text" name="fname"></td></tr> 
<tr><td>last Name:</td> 
<td><input type="text" name="lname"></td></tr> 
<tr><td>Email:</td><td><input type="text" name="email"></td> 
<tr><td>Username:</td><td><input type="text" name="user"></td></tr> 
<tr><td>Password:</td><td><input type="password" name="pass"></td> 
<tr><td colspan="2"> <input type="submit" name="Submit" value="Register"></td></tr> 

</table>`</form> 
<div id="RegDiv"></div> 
</html> 

,这里是我的reg.asp

<% 
fname = Request.Form("fname") 
lname = Request.Form("lname") 
Email = Request.Form("email") 
Username = Request.Form("user") 
Password = Request.Form("pass") 

getSub = Request.Form("Submit") 

if getSub="Register" then 

Dim goby 
goby=0 

if len(Email)<= 5 then 
goby=1 
end if 

if Instr(1, Email, "@", 1) <2 then 
goby=1 
else 

if Instr(1, Email, ".", 1) <4 then 
goby=1 

end if 
end if 

if fname="" then 
response.write("Please provide your first name") 

elseif lname="" then 
response.write("Please provide your last name") 

elseif Email="" then 
response.write("Please provide your email") 

elseif goby<>0 then 
response.write("<span style='#F00'>Please provide a real email address!</span>") 

elseif Username 
response.write("Please provide your Username") 

elseif Password="" then 
response.write("Please provide your Password") 

else 
response.write("Your form was processed successfully") 
end if 

end if 
%> 
+0

你的'pass.asp'页面里有什么?验证函数的意思是什么? – SearchAndResQ 2014-09-03 03:53:35

+0

而这:在你的'reg.asp'页面中'elseif用户名'应该是'elseif用户名=“然后' – SearchAndResQ 2014-09-03 04:24:40

+0

是的,我只是忘了elseif用户名=”“感谢提醒我。 “你的pass.asp页面里有什么?”这就是全部。 “验证函数的功能是什么?”它们运行良好,但我希望response.write显示在pass.asp页面上的main.asp中。 – micmat 2014-09-03 06:52:28

回答

0

你的代码是...奇怪的最好你有一个回报没有返回值的应用程序不应该做任何事情,并且您使用提交按钮来检测用户是否正在注册。尝试改变你的代码,看看是否有帮助。

变化:

从形式

取出回报行动的onsubmit

加入隐藏的价值,以检查是否注册

了JavaScript的设置形式值提交类型

编辑:加入inclued sataement将main和reg.asp合并为一个页面

编辑:改变形式的行动main.asp

编辑:固定一些错字

编辑:改变=到StrComp函数

编辑:忘记添加id来隐藏值

编辑:删除了StrComp的空字符串,因为它导致了错误

Main.asp

<html> 
<head> 
<script> 
function validate() { 
// removed as it will happen and then user will be sent to the next page 
// so the user will never see it 
//document.getElementById("RegDiv").innerHTML =pass.asp; 

document.getElementById('subtype').value = "Register"; 
} 
</script> 
<style> 
#RegDiv { 
color:blue; 
} 

</style> 
</head> 
<!--#include virtual="reg.asp"--> 
    <form name="RegForm" action="main.asp" method="post" onsubmit="validate();" /> 
    <input type="hidden" name="subtype" id="subtype" value=""> 
    <table border="1"> 
     <tr><td>First Name:</td> 
     <td><input type="text" name="fname"></td></tr> 
     <tr><td>last Name:</td> 
     <td><input type="text" name="lname"></td></tr> 
     <tr><td>Email:</td><td><input type="text" name="email"></td> 
     <tr><td>Username:</td><td><input type="text" name="user"></td></tr> 
     <tr><td>Password:</td><td><input type="password" name="pass"></td> 
     <tr><td colspan="2"> <input type="submit" name="Submit" value="Register"></td></tr> 

    </table>`</form> 
    <div id="RegDiv"></div> 
</html> 

reg.asp

<% 
    fname = Request.Form("fname") 
    lname = Request.Form("lname") 
    Email = Request.Form("email") 
    Username = Request.Form("user") 
    Password = Request.Form("pass") 

    getSub = Request.Form("subtype") 

    if StrComp(getSub,"Register", 1)+1 then 

    Dim goby 
    goby=0 

    if len(Email)<= 5 then 
     goby=1 
    end if 

    if Instr(1, Email, "@", 1) <2 then 
     goby=1 
    else 

     if Instr(1, Email, ".", 1) <4 then 
     goby=1 

     end if 
    end if 

    if fname ="" OR fname = vbNullString then 
    response.write("Please provide your first name") 

    ElseIf lname="" OR lname=vbNullString then 
     response.write("Please provide your last name") 

    ElseIf Email="" OR Email=vbNullString then 
     response.write("Please provide your email") 

    ElseIf goby<>0 then 
     response.write("<span style='#F00'>Please provide a real email address!</span>") 

    ElseIf Username="" OR Username=vbNullString then 
     response.write("Please provide your Username") 

    ElseIf Password="" OR Password=vbNullString then 
     response.write("Please provide your Password") 

    else 
     response.write("Your form was processed successfully") 
    end if 

    end if 
%> 

我认为最主要的打破你原来的代码是JavaScript的返回功能。因为你没有在pass.asp附近引用这个函数,所以这个函数可能会把它作为你需要生成的返回值,并且在post事件发生之前将它传递给那个页面。

+0

感谢您的纠正我做了您的所有建议,但似乎每次我完成注册,它仍然直接到reg.asp,但现在没有任何response.write甚至成功注册消息。 – micmat 2014-09-03 15:45:09

+0

确保您的表单中的操作更改为main.asp。如果仍然存在问题,请刷新页面以确保旧页面不会因任何原因而缓存在浏览器中。 – KHeaney 2014-09-03 16:16:11

+0

感谢它现在更清晰!我可以在主页上看到注册信息。但唯一的结果是“请提供您的名字”,即使成功注册后也是如此。 – micmat 2014-09-03 19:04:12