nodejs将数据从ajax重定向到ejs

时间:2017-03-31 17:44:54

标签: json node.js ajax routing ejs

我在客户端使用ajax帖子将用户详细信息发布到数据库。在服务器端,我处理我的帖子请求:

      app.post("/journey",function(req,res){
      var obj = JSON.stringify(req.body);
      var dt = JSON.parse(obj);
      //console.log(dt.zip)
      var journey_details = new Journey({
        zip : dt.zip,
        age65 : dt.age65,
        first_name : dt.fname,
        last_name : dt.lname
      });
      journey_details.save(function (err) {
     if (err) {
       return err;
     }
     else {
       console.log("Journey details saved");
       // i use some api here to get json data named parsedData
       //since i've to display the name and parsedData on a new page, i send the data to front end javascript as 
       res.send({redirect: '/profile', first_name : dt.fname, last_name : dt.lname, parsedData :  parsedData});
    });
    });

由于我使用ajax帖子,我重定向ajax成功。获得上述数据后,我使用

将其重定向到新的配置文件ejs页面
    var final_url = "http://localhost:3000" + data.redirect +"/"+data.first_name + "/" + data.last_name;
    window.location.replace(final_url);

将它们重定向到localhost:3000 / profile / fname / lname或者可能是我可以在url中使用一些唯一的id或类似的东西 它在我的个人资料ejs页面中处理

但我也想将parsedData发送到我的个人资料ejs页面。以来。 parsedData有多个带有很多字段的json对象,我不认为我可以通过url发送它:

    var final_url = "http://localhost:3000" + data.redirect +"/"+data.first_name + "/" + data.last_name + "/"+data.parsedData;
    window.location.replace(final_url);

有没有办法让我扫描发送它而不是在urlheader中,这样我可以像访问下面的fname和lname一样轻松访问parsedData:

    app.get("/profile/:firstname/:lastname",function(req,res){
    console.log(req.params.firstname);
    res.render("profile", {firstname : req.params.firstname,lastname : req.params.lastname}) // i want parsedData here

  });

1 个答案:

答案 0 :(得分:0)

GET HTTP请求不适用于大url数据,但在这种情况下使用POST请求是逻辑错误。也许对你来说最好的方法是只传递你的journey_details.id来重定向网址,而不需要任何数据。在服务器端,您将获得此记录并使用您需要的所有数据。