在Grails中发送错误并在Javascript中读取它

时间:2016-05-24 18:08:59

标签: javascript grails

我的问题是我在检查后如何从grails端发送错误,例如,如果我有一个grails控制器被调用(不知道它是否正确):

     if(something){ return error #}
     else if(something){ return error #}
     else{ return error#} 

然后我需要在js函数中做什么,以便它可以接收所述错误然后对其采取行动。即。错误200继续正常,错误400呈现新页面等,只需要到达读取此错误的部分。

2 个答案:

答案 0 :(得分:0)

简单的东西:

 def delPhoto() {
        Photos ph = Photos.get(params.id as Long)
        if (ph) {
           doSomething()
           //  return status 200
           render status:response.SC_OK
           return
        }
        //OtherWise return 404
        render status:response.SC_NOT_FOUND
    }

现在在你的gsp java脚本

$.ajax({timeout:1000,cache:true,type: 'GET',url: "${g.createLink(controller: 'photos', action: 'delPhoto')}",
            success: function(data) {
                $("#uploads").html(data);
            }, 
 statusCode: {
                417: function() {
                    $('#field').css({'color':'white'});
                    $('#field').html("${g.message(code:'default.false.error')}")
                }
            },
 statusCode: {
                404: function() {
                    $('#field').css({'color':'white'});
                    $('#field').html("${g.message(code:'default.false.error')}")
                }
            },

            error: function (e) {
            }
        });

        });

因此,您的ajax调用会为每个错误消息或成功定义在页面上更新的内容

答案 1 :(得分:0)

而不是返回状态,您可以直接在控制器操作中设置响应状态,如此

response.status = 401

并渲染任何你想要的东西。

并在您的ajax成功处理程序中访问您的响应状态,如下所示

$.ajax({
    //...        
    success: function(data, textStatus, xhr) {
        console.log(xhr.status);
    } 
});