我有一个将对象发送到NodeJS的函数。
function addRequest(request_item){
var request = new XMLHttpRequest;
request.open("GET", "http://localhost:3000/add_register_request"+"?request_item="+request_item)
request.send(request_item);
console.log("Sent");
document.location.reload(true);
};
request_item是对象。
app.get('/add_register_request', function(req,res){
console.log("ADDDD")
var request = req.query.request_item
console.log(`SQL is ${request}`) //This gives {object Object}
})
JSON.stringify(request)仅返回'{object Object}'。唯一的区别是它现在用引号引起来。
我如何也可以在NodeJS中访问该对象? 预先感谢!
答案 0 :(得分:1)
如果request_item
是对象,并将其连接为字符串,它将变成在/add_register_request
端点中收到并看到的字符串对象Object。
const request_item = { foo: 'bar' };
const request_string = "http://localhost:3000/add_register_request"+"?request_item=" + request_item;
console.log(request_string);
如果您尝试将数据发送到后端以将其保存到某个数据库或类似的数据库中,则应使用POST动词而不是GET并将数据发送到请求主体内,而不是作为参数。
此外,我认为您可能在初始化new XMLHttpRequest
时忘记了括号。我认为应该是new XMLHttpRequest()
答案 1 :(得分:1)
查询变量接受字符串,而不接受对象。如果要传递整个js对象,则可以将其编码为JSON,然后再将其编码为base64。另一种策略可能是将每个request_item
属性都转换为查询。或者,您可能想使用另一个包含正文的HTTP方法将对象发送到其中。
function addRequest(request_item){
var request = new XMLHttpRequest;
request.open(
"GET",
"http://localhost:3000/add_register_request"
+"?request_item_value_1="+request_item.value_1
+"&request_item_value_2="+request_item.value_2
)
request.send(request_item);
console.log("Sent");
document.location.reload(true);
};
然后在您的服务器中
app.get('/add_register_request', function(req,res){
console.log("ADDDD")
var request = {
value_1: req.query.request_item_value_1,
value_2: req.query.request_item_value_2,
}
console.log(`SQL is ${request}`) //This gives {object Object}
})
request_item.value_1
和request_item.value_1
是可以连接到字符串的字符串或值