我无法从.html
页面向我的node.js
服务器发出一个JSON
文件的AJAX请求。我一直在阅读AJAX
请求,但我能够说明的是如何显示服务器responseText。
如果你可以帮助我,那将会很棒,如果你可以给我一些关于此的教程会更好,无论如何这就是我现在所拥有的:
var express = require('express');
var fs = require('fs');
var app = express();
app.get('/test', function(req, res){
var arr = new Array();
var rd = readline.createInterface({
input: fs.createReadStream('info.json'),
output: process.stdout,
terminal: false
});
rd.on('line', function(line) {
arr.push(line);
}).on('close', function(){
res.send(arr);
});
});
app.get('/', function(req, res) {
fs.readFile('test2.html',function (err, data){
res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length});
res.write(data);
res.end();
});
});
app.listen(process.env.PORT || 3000);
<html>
<head>
<script>
function sendAjax(){
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status == 200){
console.log(xmlHttp.responseText);
}
document.getElementById("myDiv").innerHTML=xmlHttp.responseText;
}
xmlHttp.open("GET", "/test", true);
xmlHttp.send();
}
</script>
</head>
<body>
<input type="submit" onClick="sendAjax()" value="SendAjax" />
<div id="myDiv"><h2>Let AJAX change this text</h2></div>
</body>
</html>
我知道这可能看起来不多,我一直在努力解决这个问题,而我所拥有的这本书(Node.js in Action)并没有帮助我。但正如我所说,我想要的是在浏览器中显示.json信息。感谢阅读
答案 0 :(得分:1)
如果我理解正确,您可以替换
document.getElementById("myDiv").innerHTML=xmlHttp.responseText;
与
var parsed = JSON.parse(xmlHttp.responseText);
var html = '';
for (var i = 0; i < parsed.length; i++) {
html += '<div>' + parsed[i] + '</div>';
}
document.getElementById("myDiv").innerHTML = html;
您也可以尝试替换
res.send(arr);
与
res.json(arr);
<强>更新强>
或者你可能只是忘了在server.js的开头写这行:
var readline = require('readline');