如何在LuCI Lua标记中使用JavaScript变量?

我正在为OpenWrt LuCI网络接口创建一个HTML文件。如此讨论:http://luci.subsignal.org/trac/wiki/Documentation/Templates 我使用Lua Markup语言运行一个叫做runDiag的Lua函数,并需要将javascript变量option传递给runDiag函数。我无法弄清楚如何使其工作。我尝试了一些在displayDiag函数中更改markup的方法,但都没有成功。

有人能帮忙吗?

例如:

<%-
    function runDiag(option)
        return option
    end
-%>

<script>
    function displayDiag() {
        var option = document.getElementById('iface').value;
        document.getElementById('diag_text').innerHTML = '<%- write (runDiag(option)) -%>';
    }
</script>
点赞
用户646619
用户646619

你不能这样做。 Lua 模板在服务器上运行,而 JavaScript 代码在客户端(即 web 浏览器)上运行。它们无法通信。

Lua 代码只是生成一个要发送到客户端的 HTML 文件。它不知道 JavaScript。它只是发送给客户端的一些文本。在这里,option 指的是一个不存在的 Lua 变量,其值为 nil

相反,JavaScript 代码不知道服务器端 Lua 代码。它只获取服务器生成的内容。因此,它只看到这一行:

document.getElementById('diag_text').innerHTML = 'nil';

要与 Web 服务器通信,您需要使用 AJAX 或其他协议。

2014-04-23 14:46:01