Node.js服务器上的AJAX请求

时间:2014-02-12 11:58:32

标签: html ajax json node.js

我无法从.html页面向我的node.js服务器发出一个JSON文件的AJAX请求。我一直在阅读AJAX请求,但我能够说明的是如何显示服务器responseText。

如果你可以帮助我,那将会很棒,如果你可以给我一些关于此的教程会更好,无论如何这就是我现在所拥有的:

server.js

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);

的test.html

<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信息。感谢阅读

1 个答案:

答案 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');
相关问题