代码之家  ›  专栏  ›  技术社区  ›  Shripad Krishna

jquery ajax:当服务器端验证失败时,如何显示flash错误消息?

  •  2
  • Shripad Krishna  · 技术社区  · 14 年前

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

    2 回复  |  直到 9 年前
        1
  •  4
  •   BrendanDean Adam Byrtek    13 年前

    从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
    

    这就是你的 AjAc形形体() 呼叫可能看起来像 .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>');
      }
    });
    

    你可以阅读更多关于 error 中的回调 jQuery API .
    Paydrotalks 还有一个很好的关于重构这些类型响应的教程。

        2
  •  0
  •   ZolaKt    9 年前

    我找到了这个。

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

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