代码之家  ›  专栏  ›  技术社区  ›  fabien7474 Jan Tchärmän

如何从Grails中的AJAX错误回调中检索错误消息?

  •  0
  • fabien7474 Jan Tchärmän  · 技术社区  · 15 年前

    我发送以下AJAX请求:

    $.ajax({ type: 'POST',
      data: $(this).parents('form:first').serialize(), url:'/myapp/comment/saveOrUpdate',
      success: function(data,textStatus) {insertNewComment(data)},
      error: function(xhr, textStatus, errorThrown) {alert(xhr.responseText);}
    })
    

    …我的控制器动作如下:

    class CommentController {
    ...
    def saveOrUpdate = {
       ...
       if (error) {
          response.sendError 419, 'You must wait at least 5 minutes before posting a new comment'
       }
    }}
    

    不幸的是,我从未在HTTP响应中看到我发送的消息。相反,我从Tomcat/Apache(或Grails?)生成了一个错误HTML页面,如下所示:

    <html><head><title>Apache Tomcat/6.0-snapshot - Error report</title>
    </head><body><h1>HTTP Status 419 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>Cannot find message associated with key http.419</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0-snapshot</h3></body></html>
    

    如何绕过生成的错误HTML页面,以便从JavaScript代码中检索消息“You must wait…”?

    谢谢你的帮助。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Ken Redler    15 年前

    在您引用的例子中,Apache没有发现与419匹配的已知错误消息。

    .htaccess 配置:

    ErrorDocument 419 /errordocs/419.html
    

    …然后让419.html页面说出您喜欢的内容(并确保页面超过512字节)。但我敢打赌,使用应用程序级别的状态代码是您所需要的。