繁体   English   中英

使用javascript自动提交asp.net表单

[英]Automatically submitting an asp.net form with javascript

我需要自动将用户登录到将从php网页登录的asp.net应用程序。 我以为这很简单,但是在使其工作时遇到了问题。 我设置了一个远程测试页面,该页面向登录页面提交了emai和密码。 在登录页面上,我添加了以下代码-

<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>

如果我删除document.forms [“ form1”]。submit(); 我进入登录页面,然后在相应的框中填充电子邮件和密码,如果我随后手动单击“提交”按钮,则会登录。作为测试,我仅删除了document.forms [“ form1”]。 password.value =“ <%=会话[”密码“]%>”; 行,并且似乎在提交验证错误时提交了表单,提示输入密码是必需的(因为我会在没有密码的情况下手动提交登录名)

但是,按照目前的情况,它将带我进入登录页面,并且仅填充了电子邮件,我假设同时发送了电子邮件和密码,然后在汇总后消失了电子邮件,但是不知道为什么会这样(假设手动提交作品)我是否缺少明显的东西?

谢谢

表单标记是-

<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>

我设法使它起作用。

由于某些原因,它无法使用-

document.forms [ “form1中”]提交();

但是将其更改为-

。document.forms [ “form1中”]的元素[ “LoginBtn”]点击();

现在让我登录。

它不适用于提交的原因是由于您没有输入Type =“ Submit”。 asp:button不一定是“提交”按钮,它呈现为执行动作的按钮。 提交按钮执行POST到表单的操作页面。 如果未定义任何操作页面(在示例中就是这种情况),则不会发生任何事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM