500 错误甚至请求渲染 HTML 代码

500 error even request render HTML code

使用 ajax 从 GSP 模板中获取 HTML 内容。

$.get(url,{word:$('#search').val()},fnback)

浏览器控制台引发 500 错误。

然而,我们得到了预期的响应,但在浏览器中没有在回调中。

已知这种错误只出现在生产环境中

此问题与this ticket

相关

错误是由 Grails 或您的应用程序引起的,您需要确定原因;它似乎在管道中相对较晚发生,因为您得到了正确的 HTML 返回(我假设您没有在代码中意外地显式呈现 500 状态代码)。

至于您返回的响应,由于状态为 500,因此被忽略。 $.get function accepts a callback which is only invoked on successful requests. If you put debug lines into your fnback function you will see it is never called. If you were to replace the $.get with an equivalent $.ajax 调用并提供一个 error 回调,该函数将得到 HTML 您在浏览器的开发工具中看到的返回值。

基于@Gregor Petrin 的回答:

$.get(myurl,{word:word},function(d){
   $('div#resp').html(d)

})

已被替换为:

$.ajax({url:myurl,data:{word:word}}).always(function(d,status){
   if(status !=='success'){
    d=d.responseText;
   }
    $('div#resp').html(d);
});