如何使用 remoteFunction 将 javascript 变量传递给 grails 控制器
How can I pass javascript variable to grails controller using remoteFunction
我正在使用 grails 2.1.1。我有一个远程函数,我想通过 g:remoteFunction 传递多个 java 脚本变量。但是没有 js 变量会去控制器。我的js变量有下划线,无法识别。谁能帮我解决这个问题?!!!以下是我的尝试 ::
我的函数>>>
function addNewBill(){
var orgId = $('#aaOrgIdAaOrg').val();
var ccId = $('#costCenter').val();
if(orgId != null && orgId != "null" && orgId != "" && ccId != null && ccId != "null" && ccId != ""){
$('#ccModal').modal('hide');
${remoteFunction(action: 'createBill', params: [purchaseOrderId: purPoMstInstance.id, aaOrgIdAaOrg: orgId, costCenter: ccId], update: 'bill')}
}
}
您应该将其发送到后端的 api 端点。
我相信代码是用 GSP 编写的,它会被编译并呈现为 html,因此它无法读取页面上的用户更改。例如元素 #aaOrgIdAaOrg 是一个下拉列表,你想读取下拉列表的更改值然后 GSP 标签的编译值无法读取它。
如果事件的值不随用户事件而改变,并且从动作传递到模型中,那么您可以直接在远程函数中使用参数。
在您的情况下,我认为如果您编写自己的 ajax 代码而不是使用 remoteFunction 会更好。 RemoteFunction 标记用于基本用法,并且在较新版本的 Grails 中也已弃用,因此如果您使用此标记,则在决定迁移到较新版本的 Grails 时需要将其删除。
希望对您有所帮助
由于 remoteFunction 最终呈现 jQuery 函数,您可以使用 params 选项,使用 jQuery 选择器或您需要的 Js 变量或函数来包含您的变量。
这是一个例子。如您所见,params 值只是一个字符串,但在渲染器之后,它将是 运行 因为在那之后是 js ;)
<button type="button" onclick="${remoteFunction(controller: 'category', action: 'save', update: "eventsDiv",
params: '\'type=\' + myJSvar)}">
${message(code: 'default.button.save.label')}
</button>
function addNewBill(){
var orgId = $('#aaOrgIdAaOrg').val();
var ccId = $('#costCenter').val();
if(orgId != null && orgId != "null" && orgId != "" && ccId != null && ccId != "null" && ccId != ""){
$('#ccModal').modal('hide');
${remoteFunction(action: 'createBill', params: '\'orgId=\' + orgId+\'&ccId=\' + ccId', update: 'bill')}
}
}
我正在使用 grails 2.1.1。我有一个远程函数,我想通过 g:remoteFunction 传递多个 java 脚本变量。但是没有 js 变量会去控制器。我的js变量有下划线,无法识别。谁能帮我解决这个问题?!!!以下是我的尝试 ::
我的函数>>>
function addNewBill(){
var orgId = $('#aaOrgIdAaOrg').val();
var ccId = $('#costCenter').val();
if(orgId != null && orgId != "null" && orgId != "" && ccId != null && ccId != "null" && ccId != ""){
$('#ccModal').modal('hide');
${remoteFunction(action: 'createBill', params: [purchaseOrderId: purPoMstInstance.id, aaOrgIdAaOrg: orgId, costCenter: ccId], update: 'bill')}
}
}
您应该将其发送到后端的 api 端点。
我相信代码是用 GSP 编写的,它会被编译并呈现为 html,因此它无法读取页面上的用户更改。例如元素 #aaOrgIdAaOrg 是一个下拉列表,你想读取下拉列表的更改值然后 GSP 标签的编译值无法读取它。
如果事件的值不随用户事件而改变,并且从动作传递到模型中,那么您可以直接在远程函数中使用参数。
在您的情况下,我认为如果您编写自己的 ajax 代码而不是使用 remoteFunction 会更好。 RemoteFunction 标记用于基本用法,并且在较新版本的 Grails 中也已弃用,因此如果您使用此标记,则在决定迁移到较新版本的 Grails 时需要将其删除。
希望对您有所帮助
由于 remoteFunction 最终呈现 jQuery 函数,您可以使用 params 选项,使用 jQuery 选择器或您需要的 Js 变量或函数来包含您的变量。
这是一个例子。如您所见,params 值只是一个字符串,但在渲染器之后,它将是 运行 因为在那之后是 js ;)
<button type="button" onclick="${remoteFunction(controller: 'category', action: 'save', update: "eventsDiv",
params: '\'type=\' + myJSvar)}">
${message(code: 'default.button.save.label')}
</button>
function addNewBill(){
var orgId = $('#aaOrgIdAaOrg').val();
var ccId = $('#costCenter').val();
if(orgId != null && orgId != "null" && orgId != "" && ccId != null && ccId != "null" && ccId != ""){
$('#ccModal').modal('hide');
${remoteFunction(action: 'createBill', params: '\'orgId=\' + orgId+\'&ccId=\' + ccId', update: 'bill')}
}
}