2014-09-03 157 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