使用AJAX和表单验证的不引人注目的jQuery和Rails

使用AJAX和表单验证的不引人注目的jQuery和Rails,jquery,ruby-on-rails,ajax,validation,forms,Jquery,Ruby On Rails,Ajax,Validation,Forms,我正在寻找一种方法来调用自定义函数成功从 提交者要做正确的ajax文章 以下是我的自定义函数: jQuery.fn.submitWithAjax = function() { this.submit(function() { $.post(this.action, $(this).serialize(), null, "script"); return false; }) return this; }; 在使用validate插件之前,我有以下几点效果很好: $document.readyfu

我正在寻找一种方法来调用自定义函数成功从 提交者要做正确的ajax文章

以下是我的自定义函数:

jQuery.fn.submitWithAjax = function() {
this.submit(function() {
$.post(this.action, $(this).serialize(), null, "script");
return false;
})
return this;
};
在使用validate插件之前,我有以下几点效果很好:

$document.readyfunction{ $my_form.submitWithAjax; }

现在我已经添加了验证部分,不知道如何调用 自定义submitWithAjax函数

$(document).ready(function() {

$("#my_form").validate({

/*Validations - works perfectly!! */

},

submitHandler: function(form) {

/* $("#my_form").submitWithAjax(); - this works but
introduces recursion */

/* how to call custom subitWithAjax() ????? */

}

});
})

谢谢

您的自定义插件只添加了一个提交事件处理程序,该处理程序与验证器插件不兼容 试试这个

$("#my_form").validate({
    /*Validations - works perfectly!! */
},
submitHandler: function(form){
    $.post(this.action, $(form).serialize(), null, "script");
});

希望你能找到答案,博根比克。我最终包括了jquery ujs库中的rails.js:


并在验证后调用callRemote函数,而不是submitWithAjax。在Rails 3中为我工作。

我在使用时遇到了相同的问题,因此我决定在ajax:beforeSend回调中调用验证。以下是解决方法:

$('form').live('ajax:beforeSend', function(event, xhr, status){
  var form = $(this);
  form.validate({
    /* validation options go here */
  });
  if (!form.valid()) {
    return false;
  }
});

这是真的,但我也在每个ajax请求之前进行jQuery和ajax设置:jQuery.ajaxSetup{'beforeSend':functionxhr{xhr.setRequestHeaderAccept,text/javascript};根据您的建议,将不会调用“before send”。@bogumbiker beforeSend事件由$.post方法触发,而不是由submit事件触发。您的beforeSend功能仍将工作。我认为您是正确的,但是服务器端代码ror不再正确处理请求。找不到您的令牌。谢谢@乔恩·菲利普斯——非常感谢。我刚刚在Rails3中启动了一个新项目,并将尝试一下。干杯