【问题标题】:Data value is rendering as 'name' prior to the data being loaded数据值在加载数据之前呈现为“名称”
【发布时间】:2021-01-20 08:14:19
【问题描述】:

见下图。

搜索提交后,数据应该在搜索栏下方呈现,通过ejs加载如下:

<div class="data">
            <%= data %>
        </div>

前几天,这个数据是在点击搜索后加载的,但是,现在在加载我的本地主机时,立即出现“名称”这个词。

当我在网页上进入我的源代码时,它显示为

<div class="data">
            name
        </div>

所以这一定是这个问题的来源。 如何阻止 name 一词的呈现,而只是在表单提交时加载数据?


编辑: 这是一些后端代码

app.get('/',(req,res)=>{
  res.render('index',{
      data: 'name'
  })
})

app.post('/', async(req, res) => {

  const whoissearch = new whoissearch()

  try {
      await whoissearch()

      const url = req.body

      let urlEncoded = decodeURIComponent(url.url);

      await whoissearch.init();
      const site = await whoissearch.open(urlEncoded)
      site.on('error', console.error) // catch the errors
      const results = await site.analyze()


      const data = JSON.stringify(results, null, 2)
      console.log(results.whois[0].name)

      await whoissearch.destroy()

      res.render('index', {
          data: data
      });

我已经追查到错误来自这些行

app.get('/',(req,res)=>{
  res.render('index',{
      data: 'name'
  })
})

【问题讨论】:

  • 您能分享更多代码以便我们找到更好的解决方案吗?一旦数据可用,实际数据会替换“名称”吗?
  • @10110 重置服务器后它似乎消失了。不知道发生了什么......

标签: javascript ejs


【解决方案1】:

这是处理异步代码和 API 时的典型问题。你应该研究一个叫做“条件渲染”的概念来处理这个问题。

我有一段时间没有使用 ejs 了,如果语法不正确,请见谅。

你可以试试:

<div class="data">
        <%= data !== 'name' ? data : '' %>
</div>

您在这里看到的是可以称之为“使用三元运算符的动态渲染”。

【讨论】:

  • 似乎没有用,不幸的是我对ejs也不是很熟悉......
  • 请分享更多代码。您的问题几乎是完美的,但我(我们)需要更多上下文,因为我们假设您的代码中的内容,因为您没有共享它!
  • 我已更新以分享它的来源和我的后端。希望你能看一看!
  • 注意:npm 包是私有的
  • 感谢分享!好的,我更新了我的这个答案,请试一试,但它背后的想法是:“如果data 不等于'name',则呈现它的值,否则不要”。那是条件渲染。
【解决方案2】:

不得不重置服务器。它似乎已经修复了。

【讨论】:

  • 哦,太糟糕了哈哈......无论如何,如果你遇到这个问题。查看条件渲染,这样您就可以防止出现您不希望出现的内容,您还可以将空字符串 ('') 替换为“正在加载...”或类似的消息。祝你好运
  • @10110 现在又回来了。那么条件渲染呢?不确定这是否是条件渲染,因为我只是不希望在点击按钮之前出现任何内容
  • 明白了......“名字”这个词是从哪里来的?它是您定义的默认值吗?如果您可以添加更多代码,也许我们可以找到更好的解决方案:)
  • 更新了原帖:)
猜你喜欢
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多