Typo3:JavaScript问题。 Fluid将参数变量解释为字符串

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

我使用ajax调用我的控制器动作之一时遇到问题。在响应部分,我正在构建一个带有所需动作链接的“ html对象”,然后使用.html(html_object)将该对象放入dom。

const uid = item.uid; //simple int value

html_object= '' +
... +

'<f:link.action controller="FrontendVideo" action="show" arguments="{videoUid :'+uid.toString()+'}">'

+ ...

现在我正在尝试将uid传递给此字符串,但是Typo3将+ uid.toString解释为字符串(在dom内部,我看到的值是uid.toString()),因此收到验证错误。该行为是非常奇怪和意外的。我尝试了各种方法(也没有toString(),因为它没有必要),但是Typo3确实将传递的变量解释为字符串。

如果我将其中的值硬编码,当然一切正常。

html_object= '' +
... +

'<f:link.action controller="FrontendVideo" action="show" arguments="{videoUid :123}">'

+ ...

任何解决方案?预先谢谢你。

javascript typo3 fluid
1个回答
1
投票

这是行不通的。您将服务器的计算与客户端的计算混合在一起。

在客户端执行javascript时,在服务器上呈现流体。它在不同的时间完成。

当完成Ajax调用时,不会呈现javascript的Fluid,而是在呈现初始页面时呈现。那么就不可能插入(javascript)变量,以后再在客户端获取它的值。因此服务器只能将“变量”作为字符串插入,因为它还没有变量。


另一种方式是,如果您设法准备好Ajax调用,以便为服务器提供一些在Ajax响应中呈现的流体。 但是您不想在您的网站中使用该机制。这就像是SQL注入,因为每个人都可以在您的服务器中插入任何类型的Fluid语句。

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