Ниже приводится полный рабочий пример:
index.gsp
<!DOCTYPE html>
<html>
<head>
<meta name="layout" content="main">
<script type="text/javascript">
$(document).on('submit', function(e){
e.preventDefault();
$.ajax(
{
url : "${g.createLink(controller:'testStuff', action:'jsonUrl')}",
processData: false,
contentType: false,
async: false,
cache: false,
type: "POST",
data : $('#creationOptionsForm').serialize(),
success: function(data, status, jqxhr) {
if ( jqxhr.responseJSON.success === true ){
setTimeout(function(){
location.reload();
}, 5000);
}
}
,
error: function(jqXHR, textStatus, errorThrown)
{
alert( 'Failed' );
}
});
});
</script>
</head>
<body>
<div>
<g:form id="creationOptionsForm">
<g:textField name="thename" value="${params.thename}" />
<g:submitButton name="submit" value="submit" />
</g:form>
</div>
</body>
</html>
TestStuffController
import grails.converters.JSON
class TestStuffController {
def index() {
println 'index'
}
def jsonUrl() {
if (!true) {
render([success: false, messages: 'bad stuff'] as JSON)
return
}
render([success: true] as JSON)
}
}
Ясно, что вышеприведенное условие смешно, но здесь есть все, чтобы привести пример.