Node.js项目中出现Data.map is not a function错误求助
搞定"Data.map is not a function"这个坑!
哥们儿,你这个错误的根源太典型了——你客户端拿到的data根本不是数组,是个字符串!map()是数组才有的方法,字符串当然调用不了啦😅
为啥会这样?
看你服务器里的代码:你把doctor.json里的数组用JSON.stringify(config)转成字符串再res.send出去,但jQuery的$.get()默认会根据响应头来处理数据。你现在发的是纯字符串,客户端就把它当成普通文本接收,所以data就是一串JSON格式的字符串,不是数组,自然没法用map。
两种解决办法,随便挑一个:
方法1:服务器直接发JSON(推荐!最简单)
Express的res.send()其实支持直接传对象/数组,它会自动帮你转成JSON,还会设置正确的Content-Type响应头。改一下你的/doctors接口就行:
app.get('/doctors', function(req,res){ var config = require('./doctor.json'); res.send(config); // 直接扔数组,不用手动stringify! })
这样客户端用$.get拿到的data就是现成的数组,直接data.map(addElement)就OK了。
方法2:客户端手动解析字符串
要是你不想改服务器代码,那就在客户端把收到的字符串转成数组:
$.get('/doctors', function (data) { $("<div class='row' id='dottori' ></div>").appendTo(".team"); const doctorArray = JSON.parse(data); // 把字符串解析成数组 doctorArray.map(addElement); });
另外提个小细节
你贴的addElement函数好像没写完,少了闭合的},记得补上:
function addElement(doctor){ console.log("Adding doctor"); $("#dottori").append('<p> '+doctor.name+'</p>'); } // 这里的大括号别忘了加!
内容的提问来源于stack exchange,提问作者Mattia Surricchio
相关产品推荐
相关产品推荐

