如何访问从 JQuery AJAX 调用发送的中间件中的变量word
。
阿贾克斯
....code
$.ajax({
url: "/getWords",
word: word, //value wanting to send!!!
success: function(result) {
var myJSON = result;
console.log(myJSON);
}
});
中间件:
app.get("/getWords", function(req, res, done) {
console.log("req.body = ", req.body); //undefined ??? Looking for 'word' value
});
req.body logs undefined req.params logs {}. body parser 已安装。
谢谢
更新:这是我现在基于反馈的代码:
//script.js
$.ajax({
url: "/getWords",
data: {word: "value"},
processData: false,
dataType : "json",
contentType: "application/json; charset=utf-8",
processData: false,
success: function(result) {
var myJSON = result;
}
});
//server.js
const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get("/getWords", function(req, res) {
console.log("value = ", req.query);
});
});
不幸的是,在控制台中我得到 - 值 = {} .我在这里做错了什么?
ajax()
方法可选参数"settings"没有有效的"word"选项。请使用{ data : { word : word} }
将变量与请求一起传递(请注意,它将被解释为查询字符串,关闭processData
标志(。
样品请求
$.ajax({
url: 'myurl',
data: {
myVar: myVal
},
success: (data,status,jqXHR) => {}
});
更新
除了 Nelles 应答之外,如果您希望能够访问请求正文,您应该改用app.post()
中间件(假设您想通过 POST 请求发送数据(+ 正确设置method
ajax()
调用选项。
参考
- JQuery
ajax()
方法参考 - 快速
post()
方法参考 - MDN 上的 GET 方法参考
我建议仅在服务器端使用 nodeJS 运行 ajax 时才承诺您的ajax调用 - 以下内容对我来说就像一个魅力。
如果您不想承诺,请尝试/////中包含的代码
import $ from 'jquery'
export const myFunc = word => {
return new Promise((resolve, reject) => {
///// don't use 3 lines before this if running ajax on client side
var args = {
"word": word
}
$.ajax({
url: "/getWords",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
type: "POST",
dataType : "json",
contentType: "application/json; charset=utf-8",
data : args,
error: function(err) {
reject(err)
},
success: function(data) {
resolve(data)
}
})
///// don't use after this if client side
})
})