【问题标题】:How to access returned object from groovy controller in JS file如何从 JS 文件中的 groovy 控制器访问返回的对象
【发布时间】:2021-09-07 00:26:58
【问题描述】:

我正在尝试将 grrovy 控制器返回的对象访问到我的 javascript 代码中。

这是代码。

Groovy 控制器:

def result = [
               data     : 'data',
               status   : 'success',
            ]
[result: result]

GSP 文件:

<g:hiddenField name="result" value="${result}" />

JS 文件:

var jsresult =  $("#result").val();
console.log(jsresult);
console.log(jsresult.data);

这是控制台输出:

{data=data, status=success}
undefined

格式似乎有些问题,但无法找出根本原因。尝试将其转换为 JSON,但仍然无法访问属性(jsresult.data)。

请告诉我如何解决这个问题,如果有任何替代方式将数据从 groovy 控制器传递到 JS 代码,请告诉我。

谢谢。

【问题讨论】:

  • "尝试将其转换为 JSON,但仍无法访问属性 (jsresult.data)。" - 你尝试了什么?我认为问题在于jsresultString,而不是JS 对象,所以jsresult.data 就像"some string value".data
  • 是的,jsresult 以字符串的形式出现。不知道如何将其转换为对象并访问其属性。
  • “不确定如何将其转换为对象并访问其属性”-您曾说过“尝试将其转换为 JSON...”-您能展示一下您的尝试吗?

标签: javascript grails groovy gsp


【解决方案1】:

首先,确保您的结果被编码为正确的 JSON:

<g:hiddenField name="result" value=${result as JSON}" /> 

然后用javascript解析:

var jsresult = JSON.parse($("#result").val());

您会得到一个可以按预期进行交互的对象。

至于其他方法:有很多,但是对于简单和任意的数据传输到静态页面,这可能是最简单的。如果您使用 ajax 请求,您可以完全避免将 JSON 编码的数据放在您的页面上,但从您在此处包含的内容来看,情况似乎并非如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2012-02-21
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多