我的问题是我在检查后如何从grails端发送错误,例如,如果我有一个grails控制器被调用(不知道它是否正确):
if(something){ return error #}
else if(something){ return error #}
else{ return error#}
然后我需要在js函数中做什么,以便它可以接收所述错误然后对其采取行动。即。错误200继续正常,错误400呈现新页面等,只需要到达读取此错误的部分。
答案 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);
}
});