Fre*_*ded 2 ajax grails grails-2.0
我希望在完成AJAX调用后显示一些flash消息.我这样做..
控制器动作 -
def subscribe()
{
def subscribe = new Subscriber()
subscribe.email = params.subscribe
if (subscribe.save())
{
flash.message = "Thanks for your subscribtion"
}
}
Run Code Online (Sandbox Code Playgroud)
查看零件 -
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>
Run Code Online (Sandbox Code Playgroud)
我的AJAX工作正常,但它没有向我显示flash.message.刷新页面后显示消息.怎么解决?
当您使用ajax时,您的页面内容不会被重新解析,因此您的代码:
<g:if test="${flash.message}">
<div class="message" style="display: block">${flash.message}</div>
</g:if>
Run Code Online (Sandbox Code Playgroud)
不会再跑.
所以我同意@James的评论,flash对你来说不是更好的选择.
如果您需要更新视图,请使用JSON.Grails已经有一个可用于此的转换器:
if (subscribe.save()) {
render ([message: "Thanks for your subscribtion"] as JSON)
}
Run Code Online (Sandbox Code Playgroud)
你的观点:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4892 次 |
| 最近记录: |