簡體   English   中英

Node.js和Express.js發送Ajax發布請求

[英]Nodejs and Expressjs sending ajax post request

我在發送http://localhost:1111/user/create發布數據時遇到問題。 我正在使用Expressjs框架和Redis作為數據庫。 主要問題是它無法在客戶端中獲取文本框的值,並且在發送發布數據后,redis中所有字段的值均未定義。 我不知道這是怎么回事,但這是我的代碼:

server.js中的 app.post

app.post('/user/create', function(req, res) {

    var user = req.body.user;
    var pass = req.body.pass;
    var name = req.body.name;
    var email = req.body.email;

    return client.hmset('username:' + user, 'password', pass, 'name', name, 'email', email,
            function(err, data) {
                if (!err) {
                    return res.send(data);
                    return console.log(data);
                } else {
                    return console.log(err);
                }
            });
});

這是關於如何發送帖子數據的jQuery:

<script type="text/javascript">
            $("#createbutton").submit(function(event) {
                event.preventDefault();
                var data = {};
                data.name = $('#nameinput').val();
                data.email = $('#emailinput').val();
                data.username = $('#usernameinput').val();
                data.password = $('#passwordinput').val();
                JSON.stringify(data);
                console.log(data);

                $.ajax({
                    type: 'POST',
                    url: 'http://localhost:1111/user/create',
                    data: {data},
                    dataType: 'application/json',
                    success: function(data) {
                        console.log('success');
                        console.log(data);
                    }
                });
            });
        </script>

我已經檢查了客戶端和服務器,但是我無法弄清錯誤是什么。 在此先感謝大家。

您的數據變量錯誤,請將您的js代碼更改為以下代碼,然后嘗試一次:

<script type="text/javascript">
            $("#createbutton").submit(function(event) {
                event.preventDefault();
                var data = {};
                data.name = $('#nameinput').val();
                data.email = $('#emailinput').val();
                data.user = $('#usernameinput').val();
                data.pass = $('#passwordinput').val();
                $.ajax({
                    type: 'POST',
                    url: 'http://localhost:1111/user/create',
                    data: data,
                    dataType: 'application/json',
                    success: function(data) {
                        console.log('success');
                        console.log(data);
                    }
                });
            });
        </script>

您將需要使用bodyParser中間件來訪問發布變量。 該中間件獲取原始的發布數據,並將值分配給req.body對象。 檢查http://expressjs.com/api.html#bodyParser

app.use(express.bodyParser());

我不知道expressjs但是您可以嘗試從中更改dataType

dataType: 'application/json'

至:

dataType: 'json'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM