无法使用Ajax和jQuery Validate提交表单

时间:2012-10-30 13:32:08

标签: jquery ajax forms post jquery-validate

我会承认,我是AJAX的新手,我一直只是提交表格旧学校的方式,对表格本身采取后期行动,这很好。现在我正在尝试使用jQuery validate插件通过AJAX在jQuery中提交表单。

我还没有检查我的服务器端验证,我只是想确保我可以验证和提交我的客户端信息。我找不到将它们放在一起的单一资源。我可以找到很多有关验证工作的信息,我已经找到了有关通过AJAX发布的信息,但我似乎无法将它们全部串联起来。

我的提交代码有点像这样:

$(function() {
$("#contactForm .submit-button").click(function() {
    var Name = $("#Name").val();
    var Phone = $("#Phone").val();
    var Email = $("#Email").val();
    var Message = $("#Message").val();
    var dataString = 'Name=' + Name + '&Phone=' + Phone + '&Email=' + Email + '&Message=' + Message;

    $.ajax({
    type: "POST",
    url: "scripts/contactengine.php",
    data: dataString,
    success: function(){
        $('#contactForm').fadeOut(1000);
              $('.thanks').fadeIn(1000);
    }
    });
    return false;

}); 

})

但是,似乎我必须使用jQuery validate的提交处理程序:

$("#myForm").validate({
rules: {
    command: 'required'
},

messages: {
    command: 'Please enter a command.'
},

submitHandler: function(form) {
    $(form).ajaxSubmit({
        success: function(data) { /* ... */ },
        url: form.action,
   });

我的问题是我尝试了几种不同的方法来将我的代码整合在一起,我似乎无法做出任何魔法......我也做了一些搜索,但我只是想出来什么都没有。

我希望有人可以帮助解释我需要做些什么才能将它组合在一起,如果有人可以推荐一个很好的资源来使用这种方法在PHP中进行服务器端验证,我真的很感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

.ajaxSubmit使用jQuery表单插件。如果您尚未包含它,则会出现脚本错误,您可以在任何浏览器控制台中看到该错误。将根据浏览器阅读ajaxSubmit is not a funcion或类似内容

你可以采取各种方法。

在验证插件之外定义提交处理程序并删除submitHandler选项:

$("#contactForm").submit(function() {
      var $form=$(this)
    /* don't need to manually code each key/value pair*/
    var data= $form.serialize()

    $.ajax({
    type: "POST",
    url: "scripts/contactengine.php",
    data: data,
    success: function(){
        $form.fadeOut(1000);
              $('.thanks').fadeIn(1000);
    }
    });
    return false;

}); 

或者在验证插件的submitHandler选项中,您可以调用自己的ajax:

submitHandler: function(form) {
   var data= $(form).serialize()

        $.ajax({
        type: "POST",
        url: "scripts/contactengine.php",
        data: data,
        success: function(){
            $(form).fadeOut(1000);
                  $('.thanks').fadeIn(1000);
        }
        });
    return false;
}