如何通过ColdBox中的runEvent()按事件输出JSON数据?

问题描述 投票:1回答:1

我有一个通过event.renderData(data=mydata, "json")输出数据的事件。

当我通过浏览器访问它时,JSON数据按预期返回。虽然如果我从另一个事件中调用该事件,我只返回一个空字符串。我保存输出像这样:

savecontent variable="local.eventResult" {
  runEvent(event="mymodule:myhandler.myaction");
}

如果我在事件中转储数据,它看起来没问题。我试图通过return event.renderData(data=mydata, "json");获取数据并直接返回数据,即return mydata;,但没有成功。

我该怎么做才能获得预期的数据?

json coldfusion cfml coldbox
1个回答
0
投票

我在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 );

}
© www.soinside.com 2019 - 2024. All rights reserved.