3

我试图在 javascript 变量中获取 json。我在我的 extbasetypo3-extension 中使用了流体模板。在我的操作中,我用 curl 加载了一些 json。我分配给模板的这个 json。在我的模板中,它看起来像:

<script type="text/javascript">
var json = {jsonVarFromControllerAction};
</script>

在这种情况下,json 被解释为 html 代码。看起来像:

{&quot;content&quot;:&quot;testcontent&quot;}

在控制器动作中,它是一个正确的 json!

{"content": "testcontent"}

解决方案是什么?

4

3 回答 3

6

使用<f:format.htmlentitiesDecode>ViewHelper 对其进行解码,例如:

<script type="text/javascript">
    var json = <f:format.htmlentitiesDecode>{jsonVarFromControllerAction}</f:format.htmlentitiesDecode>;
</script>

您可以浏览所有可用的 ViewHelper 在typo3/sysext/fluid/Classes/ViewHelpers

其他选项是直接从使用 AJAX 的操作中获取使用 PHP 格式化的 JSON(不将其传递给视图),如果您想在不刷新整个页面的情况下获取新数据,这将非常有用。

于 2013-01-09T11:31:25.447 回答
0

我写了自己的viewhelper。这个 viewhelper 只获取 json-content 和 html_entity_decode 它。

public function render($json)
{
    return html_entity_decode($json);
}

它工作得很好,但我问自己,为什么我应该写一个助手来获取我自己变量的纯内容?

于 2013-01-10T11:54:13.523 回答
0

vhsformat.json.encode

<script type="text/javascript"> 
    var title = {v:format.json.encode(value: branch.name)};
    //.. do something
</script>
于 2017-02-21T10:34:29.820 回答