如何从 JS 文件中的 groovy 控制器访问返回的对象

How to access returned object from groovy controller in JS file

我正在尝试访问从 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:

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

然后在javascript中解析:

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

您将得到一个对象,您可以按预期与之交互。

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