由于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>
答案 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.number
是string
,因为它的GET请求