【发布时间】:2018-05-31 14:48:11
【问题描述】:
我正在尝试为一个学校项目建立一个网站。我设置了所有内容,但出现错误“Data.map 不是函数”。 其实我不是专家,我只是想理解和复制老师给我们的代码(我们在 node.js 中几乎什么都没做)。
我已经使用 node.js 构建了服务器
const express = require("express");
const app = express();
const process = require("process");
const bodyParser = require("body-parser");
let serverPort = process.env.PORT || 5000;
app.use(express.static(__dirname + "/public"));
app.set("port", serverPort);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/doctors', function(req,res){
var config = require('./doctor.json');
res.send(JSON.stringify(config));
})
/* Start the server on port 3000 */
app.listen(serverPort, function() {
console.log(`Your app is ready at port ${serverPort}`);
});
当我连接到医生页面时,我会加载一个包含所有医生的 JSON 文件并将其发送回客户端。这是 JSON
[{
"id": 0,
"born": 2010,
"tag": "cat",
"name": "Eleanore"
}, {
"id": 1,
"born": 2010,
"tag": "dog",
"name": "Katelin"
}, {
"id": 2,
"born": 2012,
"tag": "dog",
"name": "Shea"
}, {
"id": 3,
"born": 2011,
"tag": "cat",
"name": "Stephen"
}, {
"id": 4,
"born": 2011,
"tag": "cat",
"name": "Rosanne"
}, {
"id": 5,
"born": 2011,
"tag": "cat",
"name": "Alexa"
}
]
然后我加载 JSON,我想动态创建项目。这是我的客户端代码:
$.get('/doctors', function (data) {
$("<div class='row' id='dottori' ></div>").appendTo(".team");
data.map(addElement);
});
function addElement(doctor){
console.log("Adding doctor");
$("#dottori").append('<p> '+doctor.name+'</p>');
我一直收到这个错误,即使我对 json 文件进行字符串化(我的教授所做的一样),你可以在这里找到原始代码:https://bitbucket.org/polimi-hyp-2017-10173412/polimi-hyp-2018-project/src/master/
【问题讨论】:
-
@Taplar 他有一个 nodejs 服务
-
好吧,我显然还没有喝足够的咖啡,-_-。是的,在您的
$.get()方法中。 -
你应该解析它,而不是字符串化它
-
使用
JSON.parse -
JSON.parse(data).map(addElement);
标签: javascript jquery json node.js