3

如果我使用传统的 html 表单帖子提交,我的登录表单可以正常工作

<form class="form-horizontal" id="loginform">
    <div class="control-group">
        <label class="control-label" for="user_name">
            Username or E-Mail
        </label>
        <div class="controls">
            <input type="text" id="user_name" name="user_name" autofocus>
        </div>
    </div>
    <div class="control-group">
        <label class="control-label" for="password">
            Password
        </label>
        <div class="controls">
            <input type="password" id="password" name="password">
        </div>
    </div>
    <div class="control-group">
        <div class="controls">
            <label class="checkbox">
                <input type="checkbox">Remember me
            </label>
            <br>
            <button type="submit" class="btn" id="submit_login">
                Sign-in
            </button>
        </div>
    </div>
</form>

我不想让页面重定向,而是让用户登录并留在同一页面上。我有下面的 jQuery 来做到这一点

$(document).ready(function(){
    $("#submit_login").click(function(){
        var user_name = $("#user_name").val();
        var password = $("#password").val();
        $.post("login.php", {user_name: user_name, password: password});
    });
});

但这不是发布,我的会议也没有开始。我已经打印了 jQuery 'user_name' 和 'password' 变量,它们从表单中提取了正确的值。“login.php”文件查找的变量也是“user_name”和“password”。运行脚本时没有控制台错误。

是什么导致这里断开连接?

4

2 回答 2

2

它是 jQuery val() 方法和 Bootstrap 的 btn 类的组合,默认使用它设置样式的按钮为提交按钮。我换了

    var user_name = $("#user_name").val();
    var password = $("#password").val();

    var user_name = document.getElementById("user_name").value;
    var password = document.getElementById("password").value;

<button type="submit" class="btn" id="submit_login">

<button type="button" class="btn" id="submit_login">

并且 AJAX 按预期工作。

关键是将“提交”更改为“按钮”,而不仅仅是一起删除类型分配。如果未指定类型,则按钮默认键入“提交”

于 2013-03-13T19:40:08.567 回答
2

您应该在发送您之前立即阻止默认操作$.post以避免默认表单提交,否则您的$.post意志(在大多数情况下)将被中止。

$(document).ready(function(){
    $("#submit_login").click(function(event){
        event.preventDefault(); // stop form submit
        var user_name = $("#user_name").val();
        var password = $("#password").val();
        $.post("login.php", {user_name: user_name, password: password});
    });
});
于 2013-03-12T14:47:28.243 回答