【问题标题】:Grails - Using JS variable in remoteFunction for controller and action argsGrails - 在 remoteFunction 中为控制器和动作参数使用 JS 变量
【发布时间】:2011-10-02 17:32:01
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: javascript ajax grails


    【解决方案1】:

    我认为不可能像那样使用remoteFunction

    remoteFunction 是一个标签库,这意味着它会在服务器端进行处理。在那个阶段,javascript不运行,所以你不能用'+'附加字符串。

    简而言之,remoteFunction 中的代码必须遵循有效的 Groovy 语法。这意味着您不能像示例代码那样放入 javascript。

    我认为要使事情正常进行,您必须编写自己的 javascript 来完成这项 ajax 工作。

    【讨论】:

    • “id”部分的工作方式取决于标签库的处理方式,并且可能会发生变化。简单地说,写“remoteFunction”的开发者不会考虑你动态更改控制器名称的情况
    【解决方案2】:

    非常快,无需测试。似乎“'id=' + id”适用于 params 参数,不应该只是“ctrl”适用于控制器吗?

    你试过了吗:

    ${remoteFunction(controller: "'' + ctrl", action: "'' + action", params: "'id=' + id", onSuccess: "onSuccessLoadApplications(arguments)", onFailure: "error(arguments)")}             
    

    ??

    【讨论】:

    • 我试过了,还是不行。 Grails 不会替换 'ctrl' 和 'action' 字符串 :(
    • 嗯,这似乎很奇怪,因为参数“id”有效。我正在改变它,看看它现在是否有效。
    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多