【问题标题】:Iterate data from Express to EJS将数据从 Express 迭代到 EJS
【发布时间】:2021-08-25 00:17:49
【问题描述】:

我真的很困惑:

<script>
    const i = 0
    const data = "<%= dataMedico[0].user %>" // Fine
    const data2 = `<%= dataMedico[${i}].user %>` // Error
</script>

假设第二个使用常量“i”返回值“user”,但它只返回这个错误:

SyntaxError: Unexpected token '{' in myRoot\views\index.ejs whilecompileing ejs

我需要迭代 dataMedico 以将用户与如下表单的数据进行比较:

function verificator() {
        for(let i = 0; i < 10; i++) {

            const userMedicos = `<% dataMedico[${i}].usuario %>`
            const passwordMedicos = `<% dataMedico[${i}].contrasenia %>`

            const text = document.getElementById("user").value
            const pass1 = document.getElementById("password").value

            if (text === userMedicos && pass1 === passwordMedicos) {
                button.href = "principal"
            } else {
                alert("ERROR.");
            }
        }
    }

您是否向我推荐了另一种使其更容易的方法?

【问题讨论】:

  • Javascript 模板字符串是在浏览器解析 Javascript 时评估的,而不是在 EJS 呈现页面时评估。

标签: javascript node.js json express ejs


【解决方案1】:

Javascript 模板字符串是在浏览器解析您的 Javascript 时评估的,而不是在 EJS 呈现页面时评估的。如果这里的最终目标是让您的 verificator() 函数在您网页的 Javascript 中工作,那么您需要使用 EJS 将整个 dataMedico 数据渲染到页面的 Javascript 中的一个变量中。

然后,您页面的 Javascript 可以像引用任何 Javascript 变量的数据一样引用该数据。

因此,以下是您如何将 dataMedico 数据作为 Javascript 变量嵌入到您的页面中。

<script>
    const dataMedico = <%- JSON.stringify(dataMedico) %>;
</script>

然后您可以像这样在 verificator() 函数中使用它:

<script>

function verificator() {
        for(let i = 0; i < 10; i++) {

            const userMedicos = dataMedico[i].usuario;
            const passwordMedicos = dataMedico[i].contrasenia;

            const text = document.getElementById("user").value
            const pass1 = document.getElementById("password").value

            if (text === userMedicos && pass1 === passwordMedicos) {
                button.href = "principal"
            } else {
                alert("ERROR.");
            }
        }
    }

</script>

请注意verificator() 函数似乎不完整。您正在运行循环 10 次,但您的 elsealert() 可能多达 10 次。我想你并不是真的想要那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2018-05-14
    • 1970-01-01
    • 2019-01-07
    • 2017-10-13
    • 1970-01-01
    • 2016-10-06
    相关资源
    最近更新 更多