Node.js& ajax /取数据属性

时间:2013-07-28 11:21:05

标签: ajax node.js

我发送ajax请求:

var dataString = "{u:" + user + ", p:" + pa + "}"; 
            $.ajax({
                type: "POST",
                url: "lg.html",
                data: dataString,
                success: function(data){
                    if(data){
                        window.location = "http://localhost:8001/ea.html";  
                    }
                    else{
                        console.log(data);
                    }
                }
            });

现在,我在node.js中有我的服务器:

http.createServer(req).listen(8000);
function req(request, response){}

我想获取表单数据属性,所以我会执行下一步:

request.data;

但我看到req.data未定义。我如何获取我的数据属性?

1 个答案:

答案 0 :(得分:1)

仅使用http module,您就可以自行阅读和解析" 数据。"

requestIncomingMessageReadable Stream,因此您可以通过绑定到'data''end'事件来实现此目的。

function req(request, response) {
    var body = [];
    request.setEncoding('utf8');

    request.on('data', function (chunk) {
        body.push(chunk);
    });

    request.on('end', function () {
        var data;

        if (request.url === '/lg.html') {
            data = JSON.parse(body.join(''));

            var user = data.u;

            // ...
        }
    });
}

或者,您可以使用express之类的框架来极大地简化这一过程:

var express = require('express');
var app = express();

app.use(express.bodyParser());

app.get('/lg.html', function (req, res) {
    var user = req.body.u;

    // ...
});

但是,如果您将JSON作为data:传递,则您需要确定formatted properly

var dataString = JSON.stringify({ u: user, p: pa }); 

您还应该设置contentType to match

// ...
    data: dataString,
    contentType: 'application/json',
// ...

或者,jQuery.ajax() Object,然后对data进行网址编码。

// ...
    data: { u: user, p: pa },
// ...