从视图访问控制器值的 Grails
Grails accessing controller values from view
我对Grails很陌生,所以请耐心等待。
我的观点有这样的javascript代码:
//js code in my View
function validateEmailAndSetEmail(){
var result =${remoteFunction(controller:'myController',action:'validateEmail',update:'responseDiv', params:'''email=''+document.getElementById(''email'').value')};
if (result) { //doSomething}
}
我的控制器看起来像:
def validateEmail = {
def emailToValidate = request.getParameter("email")
def matchingEmailFound = myService.checkEmailAddress(emailToValidate)
if (matchingEmailFound){
render "This email is already in use.<br>If you have already created an account with this email, please try to reset the password from Login page."}
else{
//setEmail to send here
render "This email is not in use. This email will be used as your account email"}
return !matchingEmailFound
我的问题分为两部分:
当我从Firebug检查我的JS代码中的结果值时,它是不是布尔类型(真/假),值似乎不正确,有没有办法传递这个值从控制器的视图中正确转换为JS?
我可以将设置电子邮件值调用到某个变量吗控制器,在我看来,它在 js 之外调用它?
提前谢谢。
Remeber Ajax 是异步的 - 您的if(result)
在发送远程调用后立即执行,而不是在完成时执行。
更好的方法是更改控制器操作以返回一些 JSON 数据:
def model = [matchFound:matchingEmailFound]
if(matchingEmailFound) {
model.message = "This email is already in use.<br>If you have already created an account with this email, please try to reset the password from Login page."
} else {
model.message = "This email is not in use. This email will be used as your account email"
}
render (model as JSON)
然后在客户端使用 onSuccess
函数而不是更新。
${remoteFunction(controller:'myController',action:'validateEmail',
params:'''email=''+document.getElementById(''email'').value', onSuccess:'checkEmail(e)')};
并定义
function checkEmail(response) {
var r = JSON.parse(response.text);
$('responseDiv').innerHTML = r.message;
if(r.matchFound) {
// do stuff
}
}
我不是 JavaScript 专家,但你明白了。
相关文章:
- 如何在 Grails 中将值直接从控制器传递到 javascript 文件
- 如何打开模态窗体,在控制器中执行操作,并在 Grails 中呈现结果
- 从视图访问控制器值的 Grails
- 如何使用JavaScript文件仅调用grails控制器的方法
- 来自Grails控制器的值破坏了gsp中的javascript
- Grails-使用JSON通过Ajax从控制器渲染Map
- ajax函数和Grails控制器
- 如何使用remoteFunction将javascript变量传递给grails控制器
- 如何使用控制器操作中的post方法将grails模型渲染为javascript
- Grails控制器值(映射)到单独的javascript文件
- Grails控制器中的子对象数据绑定
- Grails javascript调用控制器方法
- 将JSON从Grails控制器传递到d3 -如何使.gsp端工作
- Grails非空参数到达控制器为空
- 如何使用angularjs在grails的控制器中渲染的模板上单击来调用函数
- 如何将javascript确认答案传递到Grails控制器
- 从控制器到gsp的Grails javascript渲染
- Grails: Ajax参数没有到达控制器
- 从GSP到控制器的Grails参数为空
- Grails控制器-从.gsp文件中选择元素的链接