Javascript 在nodeJS中解析从客户端到服务器的值格式
我有一个nodeJS应用程序 我正在尝试使用ajax将从客户端使用Javascript 在nodeJS中解析从客户端到服务器的值格式,javascript,node.js,Javascript,Node.js,我有一个nodeJS应用程序 我正在尝试使用ajax将从客户端使用navigator.userAgent获得的用户代理值发送到服务器端 PS:我知道我可以从服务器访问用户代理。我知道这一点。我这样做是为了某种目的。 详情如下: window.addEventListener('DOMContentLoaded', async() => { $.ajax({ type:'POST', url:'/UA/send/',
navigator.userAgent
获得的用户代理值发送到服务器端
PS:我知道我可以从服务器访问用户代理。我知道这一点。我这样做是为了某种目的。
详情如下:
window.addEventListener('DOMContentLoaded', async() => {
$.ajax({
type:'POST',
url:'/UA/send/',
data: navigator.userAgent })
});
在我的nodeJS服务器中,我是这样读的:
app.post('/UA/send', function(req, res)
{
console.log(req.body));
});
这是回报
{ 'Mozilla/5.0 (X11; Linux x86_64) Chrome/64.0.3282.140 Safari/537.36': '' }
我添加了警报(navigator.userAgent)代码>到我的javascript代码,我得到了以下结果:
Mozilla/5.0 (X11; Linux x86_64) Chrome/64.0.3282.140 Safari/537.36
为什么我要将它以以下格式发送到服务器端?我如何解析和阅读它 使用$.ajax
发布JSON时,必须使用JSON.stringify
和的“内容类型”:“应用程序/JSON”
标题,否则就是发送表单数据。在您的示例中,您将用户代理作为密钥发送,但没有值
这就是为什么发布的对象看起来像:{[userAgentValue]:''}
使用此选项发布JSON
$.ajax({
type:'POST',
url:'/UA/send/',
headers: { 'Content-Type': 'application/json' },
data: JSON.stringify({ userAgent: navigator.userAgent })
});
在服务器上使用正确的正文解析器:
app.use(bodyParser.json());
现在您将收到:
{ userAgent: 'Mozilla/5.0 (X11; Linux x86_64) Chrome/64.0.3282.140 Safari/537.36' }
如果您不想发布JSON,而是在使用:application/x-www-form-urlencoded
$.ajax({
type:'POST',
url:'/UA/send/',
data: { userAgent: navigator.userAgent }
});
在您的服务器上:
app.use(bodyParser.urlencoded({extended:false}));
尝试将AJAX数据设置为数据:{'userAgent':navigator.userAgent}