Grails - 在remoteFunction中使用JS变量作为控制器和动作args

时间:2011-10-02 17:32:01

标签: javascript ajax grails

我想使用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制作动态控制器和动作参数?

感谢。

2 个答案:

答案 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)")}             

...