通过ejs文件中的javascript访问JSON

时间:2018-02-07 18:11:42

标签: javascript json node.js ejs

您好我希望得到任何帮助,以解决我的代码中的这个问题。

所以这是我的节点js

的服务器文件
//setup

var express = require("express");
var request = require("request");
var bodyParser = require("body-parser");
var app = express();

//make body-parser workin
app.use(bodyParser.urlencoded({extended: true}));
//help excluding ejs extension
app.set("view engine", "ejs");
//pointing express to look at public folders for css files. 
app.use(express.static("public"));


//routing starts
//root directory
app.get("/", function(req, res){
   res.render("home", { data : "" });
});

app.post("/results", function(req, res){
    var mname = req.body.movieName;
    var myear = req.body.movieYear;
    var url = "http://www.omdbapi.com/?s="+mname+"&y="+myear+"&apikey=$$$$$$$$$$$$";
    request(url, function(error, response, body){
    if(!error && response.statusCode == 200){
       var data = JSON.parse(body);
       res.render("home", { data : data });
       console.log(url);
    }else{
      console.log("ERRRORRRR WARNNNINNNNNNGG");
      console.log(error);
    }

    });

这是我想要访问从API请求中检索到的JSON的ejs文件的一部分

<%= data["Search"][0] %>

但是,我得到这样的错误

=============================================== ===================== TypeError:/home/ubuntu/workspace/MovieSearchApp/views/home.ejs:32

  
    

32 | &lt;%= data [“Search”] [0]%&gt;

  
Cannot read property '0' of undefined
at eval (eval at compile (/home/ubuntu/workspace/MovieSearchApp node_modules/ejs/lib/ejs.js:549:12), <anonymous>:11:40) 

etc

=============================================== =====================

所以我假设我访问JSON的方式有些不对,所以我详细查看了我的JSON json example

然后我回到我的ejs文件并尝试

<%= data["Search"] %>

它没有给我任何错误并显示为

[object Object]

有人可以给我一些指导如何正确访问这个JSON吗?

感谢您的时间和提前帮助

1 个答案:

答案 0 :(得分:2)

最明显的问题是您在data: ""

中传递了app.get("/",..

这意味着当您访问网站的根/时,data是一个空字符串。

将其更改为

app.get("/", function(req, res){
   res.render("home");
});

并在视图中检查数据是否存在

<% if (data) { %>

<% } else { %>

<% } %>