我想在 AJAX 调用完成后显示一些 flash 消息。我是这样做的..
Controller Action --
def subscribe()
{
def subscribe = new Subscriber()
subscribe.email = params.subscribe
if (subscribe.save())
{
flash.message = "Thanks for your subscribtion"
}
}
查看部分 --
Subscribe :
<g:formRemote onSuccess="document.getElementById('subscribeField').value='';" url="[controller: 'TekEvent', action: 'subscribe']" update="confirm" name="updateForm">
<g:textField name="subscribe" placeholder="Enter your Email" id="subscribeField" />
<g:submitButton name="Submit" />
</g:formRemote >
<div id="confirm">
<g:if test="${flash.message}">
<div class="message" style="display: block">${flash.message}</div>
</g:if>
</div>
我的 AJAX 工作正常,但它没有向我显示 flash.message。刷新页面后显示消息。如何解决?
最佳答案
当您使用 ajax 时,您的页面内容不会被重新解析,因此您的代码:
<g:if test="${flash.message}">
<div class="message" style="display: block">${flash.message}</div>
</g:if>
不会再次运行。
所以我同意@James 的评论,flash 对你来说不是更好的选择。
如果您需要更新 View ,请使用 JSON。 Grails 已经有一个 converter可以用于此:
if (subscribe.save()) {
render ([message: "Thanks for your subscribtion"] as JSON)
}
你的观点:
<g:formRemote onSuccess="update(data)" url="[controller: 'TekEvent', action: 'subscribe']" name="updateForm">
<g:textField name="subscribe" placeholder="Enter your Email" id="subscribeField" />
<g:submitButton name="Submit" />
</g:formRemote >
<script type='text/javascript'>
function update(data) {
$('#subscribeField').val('');
$('#confirm').html(data.message);
}
</script>
关于ajax - AJAX 调用后如何在 Grails 中显示 flash.message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17920323/