自动提交包含JavaScript的asp.net形式 [英] Automatically submitting an asp.net form with javascript

查看:115
本文介绍了自动提交包含JavaScript的asp.net形式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要自动登录的用户中谁将会从一个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:LinkBut​​ton的ID =ForgottenPassBtn的CausesValidation =假=服务器>忘记密码< / ASP:LinkBut​​ton的>
            < / 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:&nbsp;&nbsp;
            </td>
            <td valign="middle" width="200">
                <asp:TextBox ID="email" CssClass="loginpagefields" runat="server" size="25"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td class="logintext">
                &nbsp;
            </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:&nbsp;&nbsp;
            </td>
            <td width="200" valign="middle">
                <asp:TextBox ID="password" CssClass="loginpagefields" runat="server" size="25" TextMode="password"></asp:TextBox>&nbsp;&nbsp;&nbsp;
            </td>
        </tr>
        <tr>
            <td class="logintext">
                &nbsp;
            </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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        </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">
                &nbsp;
            </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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆