jquery ajax event.preventDefault()取消表单的提交动作

时间:2014-05-09 23:28:40

标签: php jquery html ajax

我在html中创建了一个表单:

<form id="flog" action="https://localhost/book.php" method="post">
                    <div id="inputUser">
                        <label for="userName">User</label>
                        <input type="text" name="userName" id="userName">
                    </div>
                    <div id="inputPass">
                        <label for="password">Password</label>
                        <input type="password" name="password" id="password">
                    </div>
                    <div id="savePassword">
                        <input type="checkbox" id="savePassword" value="CheckSavePAssword">Save password
                        <br>
                    </div>
                    <input type="submit" value="Acceptar">
                </form>

我用JQuery创建了一个提交函数:

$("#flog").submit(function(event) {
var savePassword = false;
if($("#CheckSavePAssword").is(':checked')) {
  savePassword = true;
}
var login = new Object();
login.username = $("#userName").val();
login.pass = $("#password").val();
login.savePassword = savePassword;
var jlogin = JSON.stringify(login);
event.preventDefault();
$.ajax({
    url: "./checkLogin.php",
    type: "POST",
    dataType: "JSON",
    data: {"dataLogin" : jlogin},
    success: function(data, textStatus, xhr) {
      console.log("okk "+data);
    },
    error: function(xhr, textStatus, errorThrown) {
        console.log("error");
        console.log(xhr);
        console.log(textStatus);
        console.log(errorThrown);
    }
});
});

但如果我不放&#34; event.preventDefault()&#34; ajax函数没有运行,但是这行(event.preventDefault())取消了提交表单动作。问题是什么?

1 个答案:

答案 0 :(得分:1)

当您使用preventDefault()时,您会阻止表单进行传统POST,您的页面将被提交并重新加载。如果您想在AJAX调用后给用户一些反馈,则需要使用JavaScript事件处理程序。