【问题标题】:How do I pass values from grails back to a javascript function?如何将值从 grails 传递回 javascript 函数?
【发布时间】:2010-04-20 08:44:02
【问题描述】:

我觉得这个问题的答案很简单,但我似乎还没有得到它......

我有一个 Javascript 函数,它通过 remoteFunction 调用 Groovy 类中的动作。现在,我需要将操作类中的值返回给 Javascript 函数以进行进一步处理。它看起来像这样:

// sample js function in the gsp file
function setPrev() {
   ...
   var tmp = $remoteFunction(action: 'someaction', params: ...)
   ...
}

在控制器中,动作看起来像这样:

def someaction = {
   ...
   def retVal = Somedomain.anobject // 1:m relationship so there's a hasMany = [anobject...] in Somedomain
   ...
   return retVal
}

现在,当它返回到 tmp 时,它是 [object object]。有没有办法让我至少获得 [anobject1, anobject2, ..., anobjectn] 作为 tmp 的值?我什至尝试过 json 但它仍然是 [object object]。

【问题讨论】:

    标签: javascript grails groovy


    【解决方案1】:

    很简单

     return retVal as JSON
    

    记得导入 org.grails.converters.JSON(我认为是)

    【讨论】:

    • 嗨,是的,我这样做了,但是当我打印出 tmp 时,它是 [object object]...而不是 json 表示...
    • 嗨,这更像是一个 javascript 问题。如果您在 FireFox 中使用 FireBug(而且您应该这样做!),请尝试在您的 javascript 代码中编写 console.debug(tmp)。要获取数据,您应该编写 tmp.variableName。
    • 感谢您的回复 :) 实际上,我一直在通过 Firebug 查看 DOM,但我也有点迷路了。无论如何,至于 tmp.variableName,我认为这有点棘手……我似乎无法弄清楚 variableName 是什么。 retVal 是,当我在 groovy 中打印出 PersistentSet 类型的类类型时...在这种情况下,它应该看起来像 [object1: 1, object2: 2, ...] 那么我应该将它引用为 tmp.object1 吗?当我这样做时,它告诉我它是“未定义的”,但是当我查看 retVal 时,它确实有 [object1: 1, object2: 2, ...] 作为内容...
    • 在萤火虫中你也可以试试 console.dir(tmp) - 这将打印你的 json 的结构和变量
    猜你喜欢
    • 2011-07-12
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多