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

Typo3: Javascript problem. Fluid interprets arguments variable as string

我在使用 ajax 调用我的控制器操作之一时遇到问题。 在响应部分,我正在构建一个 "html object" 和一个 link 到所需的操作,然后使用 .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 在客户端执行。
而且是在不同的时间完成的。

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


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