0

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 が未定義であることがわかります。データ属性を取得するにはどうすればよいですか?

4

1 に答える 1

1

このhttpモジュールだけでは、「 data」の読み取りと解析は自分で行う必要があります。

requestIncomingMessageand Readable Stream'data'であるため、そのand'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:ていることを確認する必要があります。

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

contentType また、を match に設定する必要があります。

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

または、 を指定jQuery.ajax()Objectて URL エンコードしdataます。

// ...
    data: { u: user, p: pa },
// ...
于 2013-07-28T11:40:01.050 に答える