如何从 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 编码的数据放在您的页面上,但从您在此处包含的内容来看,情况似乎并非如此。
我正在尝试访问从 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 编码的数据放在您的页面上,但从您在此处包含的内容来看,情况似乎并非如此。