【问题标题】:How to render multiple object as JSON and how to retrieve that object from <g:javascript> in Grails?如何将多个对象呈现为 JSON 以及如何从 Grails 中的 <g:javascript> 检索该对象?
【发布时间】:2012-09-20 11:25:46
【问题描述】:

实际上,我想使用 Ajax 在 results div 中添加两个选择框。我有一个名为 ajaxFun 的函数来检索这两个选择框的值。我正在尝试将多个对象呈现为 JSON。但我不知道如何呈现以及如何从我的 javascript 函数中检索呈现的对象。

我的 GSP 页面。

<table>
<tr>
<td><div id="test" onclick="${remoteFunction(controller:'ProjectOperations', action:'ajaxFun', update:'results',onComplete:'getFields(e)',params:'\'filter=\' + escape(this.id)' )}">click me!</div></td>
</tr>
</table>
<div id="results"></div>

控制器类

import grails.converters.JSON

class ProjectOperationsController {

    def ajaxFun(){
                def project="Hill"
                def company="VK"
        def operation=Operation.findAllByProject_name(project)
        def staff=StaffDetails.findAllByCompany_name(company)

        render operation,staff as JSON//am not sure 
    }
}

在这里我想呈现两个列表 [操作和人员分别..]。 然后我也想知道如何从 javascript 函数中检索渲染的对象。

Javascript 函数

<g:javascript>
  function getFields(e){ 
// here I want to retrieve that two objects.
 } 
 </g:javascript>

【问题讨论】:

    标签: javascript ajax json grails


    【解决方案1】:

    在控制器中改变

        render operation,staff as JSON//am not sure 
    

        render [operation:operation,staff:staff] as JSON
    

    然后在javascript中

     function getFields(e){
        var data = eval("("+e.responseText+")");
        console.log(data.staff);
        console.log(data.operation);
     }
    

    在您的控制台中,您应该会看到人员的内容,然后是来自 findAll 的操作的内容,这些操作可能是您可以在 JavaScript 中使用的数组。

    【讨论】:

    • :-先生再次怀疑。我想将 Staff 和 Operation 值添加到组合框中。如何从 getFields 函数中检索该列表的值?
    • 在 responseText 上调用 eval 后,这两个列表的值在 data.staff 和 data.operation 中,您应该能够将它们作为普通的 javascript 对象使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    相关资源
    最近更新 更多