2017-05-07 52 views
1

在我的服务器上的文件我想将数据从一个txt文件送过来,并接受它在阿贾克斯像这样无法从节点服务器发送数据到阿贾克斯

app.get('/send', function(req, res) { 
showData = fs.readFile('file.txt', 'utf8', function(err, data) { 
    res.send({data:data}) 
    }) 
}) 

它达到我的Ajax代码,我想其追加到我的HTML,但我无法

console.log(response.data) 
      response.data.forEach(function(val) { 
       console.log(val.id) 
       tbodyEl.append('\ 
        <tr>\ 
         <th class="id">' + val.id + '</th>\ 
        </tr>\ 
        ') 
      }) 

当我通过只是一个普通的json变量发送从我的服务器文件,它的工作原理,但是当我尝试使用文本文件,它不会(话说类型错误:响应。 data.forEach不是函数)

+0

解析Ajax端为什么使用'forEach'? –

+0

,因为我想循环遍历每个json对象并追加它 – Sprout

+0

“每个json”对象?你只收到一个'data',它只包含一个'string' .. –

回答

2

您包含的代码中存在拼写错误=>response.dataata

您还需要JSON.parse()的回复数据。

假设您正在运行的代码无打字错误且响应已被解析,您可能面对的另一个问题是该文件包含无效的JSON或不包含数组。

+0

更正的拼写错误,响应在server.js中解析,它是否也需要在ajax脚本中解析? – Sprout

+1

你在这里包含的代码不会解析服务器上的文件(我不会这样做,'JSON.parse()'会阻止Node中的事件循环)。但答案是肯定的,它需要先在客户端解析,然后才能通过'forEach'完成。 – Sky

0

如果要在Ajax一侧保留forEach,另一种解决方案是将res.send({data:data})更改为res.send(data)。假设数据是一个数组,那么可以使用JSON.parse(response).forEach(...)