Node.JS AJAX空主体

时间:2018-07-21 15:42:20

标签: javascript jquery node.js ajax

由于data为空(控制台日志为req.body),因此无法从AJAX请求的服务器端获取{}
script.js:

$("#button").click(function(){
    var number = $("#number").val();
        $.ajax({
            url: "/multiply",
            type: "get",
            data: number,
            cache: false,
            success: function(data){
                $("#result").html(data);
            }
        });
});

服务器端:

app.get('/multiply', urlencodedParser, function(req, res, next){
    console.log(req.body); //logs {}
    res.send('ok');
});

HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Test AJAX</title>
</head>
<body>

    <input type="text" name="number" id="number">
    <button type="button" id="button">Multiply</button>

    <div id="result">

    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="/script.js"></script>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

您应该将数字作为参数添加到URL:

$.ajax({
    url: "/multiply?number=" + number,
    type: "get",
    cache: false,
    success: function(data) {
        $("#result").html(data);
    }
});

在服务器端,您可以使用req.query对象获取该值:

console.log(req.query.number);

答案 1 :(得分:0)

http get请求没有请求正文。 jQuery会自动将数据转换为url参数,因此您需要在req.query中获取该值。

答案 2 :(得分:0)

在服务器端将req.body更改为req.query.number,并在$.ajax中将数字添加为数据属性,如下所示:

$("#button").click(function(){
var number = $("#number").val();
    $.ajax({
        url: "/multiply",
        type: "get",
        data: {number: number},
        cache: false,
        success: function(data){
            $("#result").html(data);
        }
    });
});

对于POST请求,我们使用req.body,对于GET请求,我们使用req.query作为queryStrings。

  • 请注意,req.query.numberstring,因为它的GET请求