首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我不知道如何使用更新的json数据呈现新页面。

我不知道如何使用更新的json数据呈现新页面。
EN

Stack Overflow用户
提问于 2020-06-26 15:42:23
回答 2查看 35关注 0票数 0

我不确定我的错误在哪里。我是node的新手,我已经学到了很多东西。这个过程有点匆忙,因为这是一个暑期班,所以节奏很快。我知道我的路由/控制器很奇怪,这不是最好的格式。我计划在最后期限完成后“修复”这个项目。

我需要从AJAX中获取结果并将其放入post.ejs文件中。当用户点击我的index.ejs中的一个标题时,我希望它用正确的post.title和post.content将他们重定向到我的post.ejs文件

下面是我要调用的onclick函数的Ajax

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#thisTitle").on("click", function (e) {
  e.preventDefault();
  var post = $(this).text();

  $.ajax({
    type: "GET",
    url: "/post/" + post,
    dataType: "json",
    success: function (data) {
      location.assign("/post");
    },
  });
});

这是我的index.ejs文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="row">
  <div class="column">
    <div id="containerBlogPost">
      <div class="blogPost">
        <a href="">
          <h3 class="resize" id="thisTitle"><%= posts[0].title %></h3>
        </a>
        <p class="resize">
          "<%= posts[0].content %>"
        </p>
      </div>
    </div>
  </div>
</div>

最后,下面是我的GET请求

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.get("/post/:item", async (req, res) => {
  try {
    const post = await Post.findOne({ title: req.params.item });
    res.json({
      title: post.title,
      content: post.content,
    });
  } catch (err) {
    res.json({ message: err });
  }
});

app.get("/post", function (req, res) {
  Post.find({}, function (err, data) {
    if (err) throw err;
    res.render("post", { posts: data });
  });
});

下面是我尝试访问动态json数据的post.ejs

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
  <body>
    <%- include('partials/header'); -%>

    <div class="post-page">
      <div class="postContainer">
        <div class="postTitle">
          <h3 id="singlePostTitle"><%= test %></h3>
        </div>

        <div class="blogPostPage" id="singlePostContent"><%= test %>"</div>
      </div>
    </div>
  </body>
</html>

当我访问postman上的GET请求/post/:item时,我得到了我想要获取的结果。我只是不知道如何使用json数据并将其正确地传递到ajax来呈现具有/post/:item动态数据的/post页面

EN

回答 2

Stack Overflow用户

发布于 2020-06-26 16:08:29

使用ajax调用,您将获得与您正在查找的帖子的数据相对应的JSON,并且它应该在相同的文档中使用它的数据,在本例中为index.ejs。当在$ajax回调success中实现JSON时,您将重定向到另一个文档,而JSON仍未使用。也许您应该重新考虑您想要做什么,例如,您可以在同一视图index.ejs中显示在ajax中获得的帖子,例如

index.ejs中,添加带有输出类的div

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="blogPost">
  <div class="output"></div> <!-- add this element -->
  <a href="">
    <h3 class="resize" id="thisTitle"><%= posts[0].title %></h3>
  </a>
  <p class="resize">
    "<%= posts[0].content %>"
  </p>
</div>

在javascript中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#thisTitle").on("click", function (e) {
  e.preventDefault();
  var post = $(this).text();

  $.ajax({
    type: "GET",
    url: "/post/" + post,
    dataType: "json",
    success: function (data) {
      document.querySelector(".output").innerHTML = JSON.stringify(data);

      // location.assign("/post");
    },
  });
});

重要的是,您理解了调用ajax的结果应该在什么上下文中使用,我希望这对您有用

票数 0
EN

Stack Overflow用户

发布于 2020-06-26 16:36:24

我没有完全理解您的意思,但我知道您希望在AJAX脚本和Router文件之间来回传递JSON数据。以下代码将帮助您完成此操作:

将数据从AJAX传递到路由器(使用POST方法:

Script.js (AJAX):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            $.ajax({
                url: '/post/'+post,
                method: 'POST',
                contentType: 'application/json', // to set header content-type
                dataType: 'json', // must be defined
                data: JSON.stringify(data), // 'data' is the files you want to pass to the router (in your case it is 'title'
                success: function(res){
                    console.log('data passed success fully')
                },
                error: function(){
                    console.log('error')
                }
            })

Router.js:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.post("/post/:item", function (req, res) {
  console.log(res.body)
});`

要将数据从路由器传递到AJAX (使用GET方法):

Router.js:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.get("/post", async (req, res) => {
  try {
    const post = await Post.findOne({ title: req.params.item });
    res.json({
      title: post.title,
      content: post.content,
    });
  } catch (err) {
    res.json({ message: err });
  }
});

Script.js (AJAX):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
             $.ajax({
                    url: '/post',
                    method: 'GET',
                    success: function(res){
                        console.log(res.title)
                        console.log(res.content)
                    },
                    error: function(){
                        console.log('error')
                    }
                })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62598219

复制
相关文章
向量数据库入坑指南:初识 Faiss,如何将数据转换为向量(一)
我们日常使用的各种 APP 中的许多功能,都离不开相似度检索技术。比如一个接一个的新闻和视频推荐、各种常见的对话机器人、保护我们日常账号安全的风控系统、能够用哼唱来找到歌曲的听歌识曲,甚至就连外卖配送的最佳路线选择也都有着它的身影。
Zilliz RDS
2022/11/07
8.8K0
Python列表长度
确定列表长度 # 定义一个汽车品牌数组 cars = ['bmw', 'audi', 'benz'] # 输出列表长度 print('列表长度是:') print(len(cars)) 输出 列表长度是: 3
py3study
2020/01/10
1.4K0
如何将Pandas数据转换为Excel文件
将数据导出到Excel文件通常是任何用户阅读和解释一组数据的最优先和最方便的方式。通过使用Pandas库,可以用Python代码将你的网络搜刮或其他收集的数据导出到Excel文件中,而且步骤非常简单。
玖柒的小窝
2021/11/01
7.6K0
将列表分成指定长度的列表
在工作或参加面试过程中,经常遇到将一个列表,按指定长度分割成多个列表的问题。详细实现过程,看如下具体实例:
TalkPython
2019/05/24
2.9K0
不同列不同行的数据如何进行转置?
案例模拟文件下载 http://gofile.me/4KHV7/SUo5ywXxC
逍遥之
2020/03/24
2.9K0
不同列不同行的数据如何进行转置?
获取不同长度的UUID[通俗易懂]
在公司,有时候让处理一些命名规则时,要使用一个唯一标识,还是十六进制的,需要多少位看领导心情.
全栈程序员站长
2022/09/22
3.5K0
列表长度与索引
借助llength命令可获取列表的长度(列表所包含的元素的个数,不难发现很多跟列表相关的命令都是以英文单词l(其大写为L)开头的)。图1显示列表a的长度为3。
Lauren的FPGA
2019/10/30
1.5K0
如何将ownCloud转换为Nextcloud
ownCloud的核心开发团队中一部分人员启动了一个名为Nextcloud的项目。虽然ownCloud将继续开发,但您可能想了解新项目的功能。Nextcloud和ownCloud共享一个公共代码库,这意味着将现有的ownCloud安装迁移到Nextcloud中。
小铁匠米兰的v
2018/08/02
2.6K0
【转】URL最大长度问题
今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的。URL中列出了所有参与该操作的Ticket Id。于是,我想起GET请求是有最大长度限制的。遂输入超长一串Ticket Id进行请求,结果页面报错如下:
ZhangXianSheng
2019/07/02
2.7K0
如何将Array转换为List?
可以使用 Arrays.asList() 方法, 该方法接受一个数组作为输入,并返回一个列表作为输出。
程序你好
2018/07/23
1.4K0
python如何将一个多位数数值转换为列表类型
现在:a = 10,由于暂时没找到更好的方法,且使用下面的方法进行转换。 目标:转化为['10'] 以下为错误尝试: 1.直接转换,提示整型对象不可迭代。 2.先转换为字符串,再转换为列表,发现被分成
逆向小白
2018/09/12
1.8K0
python如何将一个多位数数值转换为列表类型
如何将文字转换为对应的PathGeometry
其实我们可以使用FormattedText的BuildGeometry将字符串转成对应的Geometry
黄腾霄
2020/06/10
1.6K0
Python 元组转换为列表
结论:当给定一个可迭代对象(如列表、元组、集合、范围等)时,list() 和 tuple() 返回一个新的列表和元组
Python学习者
2023/07/17
2780
策略模式:处理不同策略具有不同参数的情况
策略模式确实在处理不同策略需要不同参数的情况下会显得有些复杂。然而,这并不意味着策略模式不能在这种情况下使用。有几种可能的解决方案:
运维开发王义杰
2023/08/16
6700
策略模式:处理不同策略具有不同参数的情况
java如何将String转换为enum
已知枚举对应的String值,希望得到对应的枚举值。例如,已知"A",希望得到对应的枚举——Blah.A,应该怎么做? Enum.valueOf()是否能实现以上目的,如果是,那我如何使用?
硬核编程
2020/07/23
3.9K0
向量数据库的四大优势
其一,高效的向量查询:传统的关系型数据库查询主要是基于条件和逻辑运算,而向量数据库的查询是基于向量相似性的匹配。通过使用向量相似度算法,向量数据库能够更快地查询与某个向量最相似的数据;其二,良好的扩展性:向量数据库通常能够支持大规模向量数据的存储和查询,而且可以轻松地通过添加更多的节点来扩展系统的性能;
LCHub低代码社区
2023/06/21
8330
向量数据库的四大优势
如何将Altium画的PCB转换为Allegro
PCB(Printed-Circuit Board)设计软件种类有很多种,但是最常用的是Altium Designer、mentor pads、cadence allegro这三个软件,既然是常用的,那就可能会遇到相互转换的时候,下面为具体步骤:
用户10191012
2022/11/18
2.3K0
如何将Altium画的PCB转换为Allegro
如何将视频轻松转换为 GIF
有时看到一条有意思的视频想发到朋友圈,但朋友圈有限制时长,而且也不方便,这时可以把视频转GIF(再做成表情包也可以),再发到朋友圈或者微博(不用像视频一样需要等待审核)。
苏生不惑
2020/02/26
1.8K0
如何将pdf转换为word 2.0
再次以《新冠肺炎诊疗方案(试行第七版)》为例,该文件为图片性pdf,文字不可复制。
生信菜鸟团
2020/06/04
2.6K0
点击加载更多

相似问题

我可以从命令行向github添加问题吗?

64

可以从命令行传递关键字参数吗?

10

如何从命令行向Makefile传递参数?

51

从命令行向Java类传递参数

10

如何从命令行向gradle传递参数

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文