javascript - ajax验证成功后才提交表单

标签 javascript php jquery ajax forms

我试图让“添加到购物车”按钮仅在 ajax 调用成功返回时执行实际提交(继续到添加到购物车页面),否则显示 ajax 结果中给出的消息,并且并不实际执行提交。

这就是我目前所拥有的

$("#addtocart").submit(function(event){
    var data = $(this).serialize();

    $.ajax({
        type: "POST",
        url: "/cart/check",
        dataType:"json",
        data: data
    }).done(function(data){ 
        $("#message").html(data.message);              
        if (data.success == true) this.submit();         
    })
    event.preventDefault();         
});

如果我删除 event.preventDefault() ,无论检查如何,表单总是会提交,如果我保留它,它永远不会提交。也许 this.submit() 不是正确的解决方案。我在某处读到,只有在验证失败时才应调用 Preventdefault,但如果我尝试

if (data.success == false) event.preventDefault(); 

无论 data.success 为 true 或 false,它仍然提交表单

如果有人能找到正确的解决方案,我将非常感激

最佳答案

完成回调中的

this 是 jqXhr 对象而不是表单,如果要将表单绑定(bind)为完成函数的上下文,请使用“上下文配置”。

$.ajax({
    context: this, //<-- the form
    ...

关于javascript - ajax验证成功后才提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971824/

相关文章:

javascript - node.js Buffer 和 WebAssembly Memory 有什么区别?

javascript - 通过 JS Ctrl 手动将范围添加到 html 元素

javascript - 使用ajax刷新页面的一部分 - 不起作用

javascript - 启用js重定向到apache服务器的私有(private)文件夹

php - Laravel 中的 "Use of undefined constant..."错误

javascript - 无法使用 jQuery 提取值

jquery - 在 Bootstrap 中使用 pull-right 类垂直居中对齐元素

jquery ui datepicker..我可以使其静态吗?

javascript - AngularJS:在更改/输入/立即显示表单输入错误

php - 使用ajax在表中显示数组数据