自动提交包含JavaScript的asp.net形式 [英] Automatically submitting an asp.net form with javascript
问题描述
我需要自动登录的用户中谁将会从一个PHP网页上登录一个asp.net应用程序。我想这将是相当简单的,但我有得到它的工作的问题。我设置一个提交到登录页面的鄂麦和密码,远程测试页面。在登录页上添加以下code -
<脚本=服务器>无效的Page_Load(对象发件人,EventArgs的发送){如果(的IsPostBack){
//这是一个回传
}其他{
//它不是一个回发会话[电子邮件] =的Request.Form [电子邮件];
会话[密码] =的Request.Form [密码];
Page.ClientScript.RegisterStartupScript(Type.GetType(System.String),addScript,submitForm(),真);
}< / SCRIPT>
<脚本类型=文/ JavaScript的>
功能submitForm(){
。document.forms [Form1的]元素[电子邮件]值=<%=会话[电子邮件]%GT;
document.forms [Form1的] password.value =<%=会话。[密码]%GT;
document.forms [Form1的]提交()。
}
< / SCRIPT>
如果我删除document.forms [Form1的]提交();行我带到了登录页面,电子邮件和密码,在相应的框中被填充,如果我再点击提交按钮手动我得到登陆,作为一个测试我然后取出只有document.forms [Form1的。 password.value =<%=会话[密码]%>;线,它似乎提交表单,因为我得到了验证错误说密码是必需的(因为我会做手工提交登录不需要密码)
不过,因为它代表它带我到登录页面,仅填充了电子邮件,我认为电子邮件和密码已发送,然后电子邮件已经summission后dissapeared但不知道为什么会出现这种情况(给定一个手动提交作品)我失去了一些东西明显?
感谢
组成标记是 -
<表ID =form1的=服务器>
<表类=loginpanelouterBORDER =0的cellpadding =0CELLSPACING =0ALIGN =中心>
&所述; TR>
&所述; TD类=loginlogo列跨度=2>
< ASP:图片ID =CMSLogo=服务器/>
< / TD>
< / TR>
&所述; TR>
&所述; TD类=logininvalid列跨度=2>
< ASP:标签ID =的ErrorMessage=服务器>< / ASP:标签>
< / TD>
< / TR>
&所述; TR>
&所述; TD类=loginforgot列跨度=2>
< ASP:LinkButton的ID =ForgottenPassBtn的CausesValidation =假=服务器>忘记密码< / ASP:LinkButton的>
< / TD>
< / TR>
&所述; TR>
< TD类=logintext>
电子邮件:放大器; NBSP;&安培; NBSP;
< / TD>
&所述; TD VALIGN =中间宽度=200>
< ASP:文本框ID =电子邮件的CssClass =loginpagefields=服务器大小=25>< / ASP:文本框>
< / TD>
< / TR>
&所述; TR>
< TD类=logintext>
&安培; NBSP;
< / TD>
< TD WIDTH =240VALIGN =中间>
< ASP:RegularEx pressionValidator ID =emailValid=服务器ValidationEx pression =[\\ W \\ .-] +(\\ + \\ W - ] *)@([\\ w? - ] + \\)+ \\ W - ] +
的ErrorMessage =请输入一个有效的电子邮件地址。的ControlToValidate =电子邮件
EnableClientScript =假>< / ASP:RegularEx pressionValidator>
< / TD>
< / TR>
&所述; TR>
< TD类=logintext>
密码:放大器; NBSP;&安培; NBSP;
< / TD>
< TD WIDTH =200VALIGN =中间>
< ASP:文本框ID =密码的CssClass =loginpagefields=服务器大小=25的TextMode =密码>< / ASP:文本框>&安培; NBSP;&安培; NBSP;&安培; NBSP ;
< / TD>
< / TR>
&所述; TR>
< TD类=logintext>
&安培; NBSP;
< / TD>
< TD WIDTH =240VALIGN =中间>
< ASP:的RequiredFieldValidator ID =passwordRequired=服务器的ErrorMessage =请输入密码
显示=静态的ControlToValidate =密码EnableClientScript =假>< / ASP:&的RequiredFieldValidator GT;
< / TD>
< / TR>
&所述; TR>
&所述; TD列跨度=2>
<表>
&所述; TR>
< TD类=loginremeber>
< ASP:复选框ID =RememberLogin=服务器文本=记住我的登录详细信息
工具提示=如果你希望你的登录详细信息请选择此框被记住>
< / ASP:复选框>&安培; NBSP;&安培; NBSP;&安培; NBSP;&安培; NBSP;&安培; NBSP;&安培; NBSP;&安培; NBSP;
< / TD>
< TD WIDTH =120像素VALIGN =中间ALIGN =右>
< ASP:按钮的ID =LoginBtn=服务器的CssClass =的ButtonStyle文本=登录工具提示=请点击登录>
< / ASP:按钮>
< / TD>
< / TR>
< /表>
< / TD>
< / TR>
&所述; TR>
< TD合并单元格=2HEIGHT =35>
&安培; NBSP;
< / TD>
< / TR>
< /表>
< /表及GT;
我设法得到它的工作。
出于某种原因,没有一起工作 -
document.forms [Form1的]提交();
但改变这 -
document.forms [Form1的]元素[LoginBtn]点击();
现在让我登录。
I need to automatically log users in to an asp.net application who will be logging in from a php webpage. I thought this would be fairly simple but am having problems getting it to work. I set up a remote test page that submits an emai and password to the login page. On the login page I added the following code -
<script runat="server">
void Page_Load(object sender, EventArgs e){
if (IsPostBack) {
// It is a postback
} else {
// It is not a postback
Session["email"]= Request.Form["email"];
Session["password"]= Request.Form["password"];
Page.ClientScript.RegisterStartupScript(Type.GetType("System.String"), "addScript", "submitForm()", true);
}
</script>
<script type="text/javascript">
function submitForm() {
document.forms["form1"].elements["email"].value = "<%= Session["email"] %>";
document.forms["form1"].password.value = "<%= Session["password"] %>";
document.forms["form1"].submit();
}
</script>
If I remove the document.forms["form1"].submit(); line I am taken to the login page and the email and password are populated in the appropriate boxes, if I then click the submit button manually I get logged in. As a test I then removed only the document.forms["form1"].password.value = "<%= Session["password"] %>"; line and it seemed to submit the form as I got a validation error saying that a password is required (as I would do submitting the login manually without a password)
However as it stands it takes me to the login page and only the email is populated, I assume both email and password have been sent and then email has dissapeared after summission but don't know why that would be the case (given that a manually submission works) am I missing something obvious?
Thanks
Form markup is -
<form id="form1" runat="server">
<table class="loginpanelouter" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td class="loginlogo" colspan="2">
<asp:Image ID="CMSLogo" runat="server" />
</td>
</tr>
<tr>
<td class="logininvalid" colspan="2">
<asp:Label ID="ErrorMessage" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td class="loginforgot" colspan="2">
<asp:LinkButton ID="ForgottenPassBtn" CausesValidation="false" runat="server">Forgotten Password?</asp:LinkButton>
</td>
</tr>
<tr>
<td class="logintext">
Email:
</td>
<td valign="middle" width="200">
<asp:TextBox ID="email" CssClass="loginpagefields" runat="server" size="25"></asp:TextBox>
</td>
</tr>
<tr>
<td class="logintext">
</td>
<td width="240" valign="middle">
<asp:RegularExpressionValidator ID="emailValid" runat="server" ValidationExpression="[\w\.-]+(\+[\w-]*)?@([\w-]+\.)+[\w-]+"
ErrorMessage="Please enter a valid email address." ControlToValidate="email"
EnableClientScript="False"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="logintext">
Password:
</td>
<td width="200" valign="middle">
<asp:TextBox ID="password" CssClass="loginpagefields" runat="server" size="25" TextMode="password"></asp:TextBox>
</td>
</tr>
<tr>
<td class="logintext">
</td>
<td width="240" valign="middle">
<asp:RequiredFieldValidator ID="passwordRequired" runat="server" ErrorMessage="Please enter your Password"
Display="Static" ControlToValidate="password" EnableClientScript="False"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr>
<td class="loginremeber">
<asp:CheckBox ID="RememberLogin" runat="server" Text="Remember my sign in details"
ToolTip="Please select this box if you wish your sign in details to be remembered">
</asp:CheckBox>
</td>
<td width="120px" valign="middle" align="right">
<asp:Button ID="LoginBtn" runat="server" CssClass="buttonstyle" Text="Sign in" ToolTip="Please click to sign in">
</asp:Button>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" height="35">
</td>
</tr>
</table>
</form>
I managed to get it to work.
For some reason it didn't work with -
document.forms["form1"].submit();
But changing this to -
document.forms["form1"].elements["LoginBtn"].click();
Now lets me login.
这篇关于自动提交包含JavaScript的asp.net形式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!