【问题标题】:Jquery AJAX: How to display the Flash error message when validation on the server side fails?Jquery AJAX:服务器端验证失败时如何显示Flash错误消息?
【发布时间】:2011-02-26 19:26:17
【问题描述】:

我正在使用 Jquery 表单插件通过 ajax 提交表单。我已经在我的模型中的服务器端设置了验证。现在,当验证失败时,我想使用 ajax 向用户显示相同的 flash[:error] 消息。如果验证成功,我可以显示 flash[:notice],因为它在请求完成后可用。如何显示 flash[:error]?

【问题讨论】:

    标签: jquery ruby-on-rails validation


    【解决方案1】:

    我找到了这个。

    https://github.com/augustl/live-validations/wiki

    如果有人有更好的解决方案,请发帖,我会接受的。

    【讨论】:

      【解决方案2】:

      从 Rails 应用返回 HTML 错误状态。在.ajaxForm() 选项中,设置“错误”回调来处理错误状态。

      您的 Rails 控制器可能如下所示:

      def update
        @widget = Widget.find(params[:id])
      
        if @widget.update_attributes(params[:widget])
          respond_to do |format|
            format.js { head :ok }
          end
        else
          respond_to do |format|
            format.js { render :json => @widget.errors.full_messages.join(' '), :status => 400 }
          end
        end
      end
      

      这就是您的.ajaxForm() 调用的样子(.ajaxSubmit() 也是如此):

      $('form.ajax').ajaxForm({
        success: function(data) {
          /* response for success */
        },
        error: function(data) {
          /* Display validation message response from Rails app */
          $('form.ajax').prepend('<p class="errors">' + data.responseText + '</p>');
        }
      });
      

      您可以在jQuery API 中阅读有关error 回调的更多信息。
      Paydrotalks 也有关于重构这些类型响应的很好的教程。

      【讨论】:

        猜你喜欢
        • 2017-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        • 2017-10-26
        • 2020-12-26
        • 1970-01-01
        相关资源
        最近更新 更多