繁体   English   中英

无法通过XHTTP请求从客户端JS向NodeJS发送对象

[英]Unable to send object through XHTTP Request from Client Side JS to NodeJS

我有一个将对象发送到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中访问该对象? 提前致谢!

如果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()

查询变量接受字符串,而不接受对象。 如果要传递整个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_1request_item.value_1是字符串或可以串联为字符串的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM