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


jquery ajax event.preventDefault() cancel the submit action of form

我在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);
    }
});
});

但是如果我不放"event.preventDefault()" ajax函数不运行,但这一行(event.preventDefault())取消提交表单的动作。有什么问题吗?

当您使用preventDefault()时,您可以防止表单经历传统的POST,您的页面将被提交和重新加载。如果您希望在AJAX调用之后给用户一些反馈,则需要使用JavaScript事件处理程序。