我有一个通过event.renderData(data=mydata, "json")
输出数据的事件。
当我通过浏览器访问它时,JSON数据按预期返回。虽然如果我从另一个事件中调用该事件,我只返回一个空字符串。我保存输出像这样:
savecontent variable="local.eventResult" {
runEvent(event="mymodule:myhandler.myaction");
}
如果我在事件中转储数据,它看起来没问题。我试图通过return event.renderData(data=mydata, "json");
获取数据并直接返回数据,即return mydata;
,但没有成功。
我该怎么做才能获得预期的数据?
我在ColdBox Slack频道上问了一个类似的问题,并收到了这种行为是故意的回应。你不能使用renderData()
从runEvent()
返回输出。以下是我从Luis M收到的回复:
RenderData主要用于编组数据的请求,而不是事件,如果你想让事件返回一些东西,那么只需使用
return
例:
function test( event, rc, prc ) {
return "<p>MyViewlet</p>";
}
在您的示例中,如果要将数据输出为JSON,则可以在处理程序中使用以下内容:
function myAction( event, rc, prc ) {
var myData = {
fruit = "apple",
vegetable = "carrot"
};
return serializeJSON( myData );
}