我想使用remoteFunction调用Ajax函数。但是我想用JS变量设置控制器和动作名称。像这样:
...
var id = 1;
for (var i = 0; i < updater.slaves.length; i++) {
var slave = updater.slaves[i];
var ctrl = slave.data.controller;
var action = slave.data.action;
${remoteFunction(controller: ctrl, action: action, params: "'id=' + id", onSuccess: "onSuccessLoadApplications(arguments)", onFailure: "error(arguments)")}
}
问题是我无法检索ctrl和action值(对于id var来说没问题)。
那么,是否可以为remoteFunction制作动态控制器和动作参数?
感谢。
答案 0 :(得分:1)
我认为不可能像这样使用remoteFunction
。
remoteFunction
是一个taglib,这意味着它将在服务器端进行处理。在那个阶段,javascript不会运行,所以你不能用'+'追加字符串。
简而言之,remoteFunction
中的代码必须遵循有效的Groovy语法。这意味着你不能像示例代码一样放入javascript。
我认为为了让事情有效,你必须编写自己的javascript来做这个ajax工作。
答案 1 :(得分:0)
真的很快,没有测试出来。似乎“'id ='+ id”适用于params参数,不应该只是“ctrl”为控制器工作吗?
你试过了吗?
${remoteFunction(controller: "'' + ctrl", action: "'' + action", params: "'id=' + id", onSuccess: "onSuccessLoadApplications(arguments)", onFailure: "error(arguments)")}
...