【问题标题】:jquery ajax submithandler function does not workjquery ajax submithandler 函数不起作用
【发布时间】:2013-07-19 13:26:51
【问题描述】:

不知何故,我的 ajax 提交处理程序代码不起作用。我希望只有当 jquery validate() 正确验证表单时,用户才提交表单 (myForm)。

表单验证工作正常,但提交表单不会产生正确的响应,并且似乎重新加载网页。

我检查了http://www.malsup.com/jquery/form/#api 和http://jqueryvalidation.org/validate/,但无法找出提交处理程序代码中的错误。

请你帮忙。

代码:

<script>    
    $(function() {

    $("#myForm").validate({


    rules: {
            // simple rule, converted to {required:true}


            'productname[]': {
                required:true,
                minlength: 2,
                maxlength: 30,
            }

            }, //rules

    // pass options to ajaxForm 


    submitHandler: function(myForm) {
        var options = { 
            type: "POST",
            url: "form_submit2ajx.php",
            data: $("#myForm").serialize(),
            dataType: "json",

            success: function(msg){
                $("#formResponse").removeClass('error');
                $("#formResponse").addClass(msg.statusgeneral);
                $("#formResponse").html(msg.statusgeneral);


            },
            error: function(){
                $("#formResponse").removeClass('success');
                $("#formResponse").addClass('error');
                $("#formResponse").html("There was an error submitting the form. Please try again.");
            } 
    }//var options  

    $('#myForm').ajaxForm(options); 
    $(this).ajaxSubmit();
    return false;
    }       

    }); //validate()

}); //function
</script>

【问题讨论】:

  • 去掉maxlength: 30后面的逗号
  • 记错了,谢谢。但是,去掉逗号并不能解决问题

标签: jquery


【解决方案1】:

刚刚注意到这个

        $('#myForm').ajaxForm(options);
        $(this).ajaxSubmit();

不如这样试试

        $(this).ajaxSubmit(options);

【讨论】:

  • 谢谢。我已经在变量“选项”中添加了结果处理程序。无论如何,尝试您的建议并没有解决问题。控制台日志(监控 'msg.statusgeneral' 确实以红色指示错误,但在不到一秒的时间内消失。在 validate() 中编写处理程序之前,我编写了一个单独的 ajax 处理程序 - $("#myForm").submit(function () {$.ajax({ }) }) - 工作正常。是否可以在 validate() 的处理程序中调用该处理程序?
  • 我相信你可以,但也许可以尝试将“this”更改为“#myForm”,它可能超出范围
  • 哪一个或者你都试过了?
  • 你为什么返回 false ?
  • 我按照建议将“this”更改为“#myForm”。我还尝试了建议的“$(this).ajaxSubmit(options);”返回 false 以阻止正常的浏览器提交和页面导航(参考:malsup.com/jquery/form/#api)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
相关资源
最近更新 更多