Javascript 我没有';无法从nodejs服务器获取响应。它在向服务器发出请求后显示未定义
我在Firebase和Heroku两个不同的平台上托管了该网站Javascript 我没有';无法从nodejs服务器获取响应。它在向服务器发出请求后显示未定义,javascript,node.js,rest,webserver,Javascript,Node.js,Rest,Webserver,我在Firebase和Heroku两个不同的平台上托管了该网站 我对此有一些问题 首先,当我将数据从firebase托管URL发布到Heroku上托管的服务器时,它显示cors错误 然后,在解决cors错误后,无法从服务器获取数据,控制台中显示未定义数据 这是我的服务器端代码,托管在Heroku上 这是我的客户端代码 document.getElementById('send').addEventListener('click',async()=>{ let data
我对此有一些问题
这是我的服务器端代码,托管在Heroku上
document.getElementById('send').addEventListener('click',async()=>{
let data = {lat,lon}
await fetch('https://demoserver-app.herokuapp.com/',{mode:"no-cors"},{
method: 'POST', // or 'PUT'
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
}).then( async (dat) =>{
console.log(res.json())
}).then(res =>{
console.log(res)
})
})
它是在控制台上给出错误,如
形象
“网络”选项卡中的标题信息
图像我希望我能帮助你,
我看到的一个问题可以产生这种输出
是您的console.log(res)但是.然后引用(dat)
我认为你不需要内部异步。那么(它已经是异步函数了)
试试这个:
document.getElementById('send').addEventListener('click',async()=>{
让数据={lat,lon}
待命https://demoserver-app.herokuapp.com/“,{模式:“无cors”}{
方法:“POST'、//或“PUT”
标题:{
“内容类型”:“应用程序/json”,
},
正文:JSON.stringify(数据),
})。然后(数据=>{
data.json()
})。然后(res=>{
console.log(res)
})
})
好的,那么对于服务器端:
1) 您需要对req.body中的数据进行解构,您所做的只是将req.body调整为数据栏。(请参阅我的解决方案)
2) 对于post方法,您需要创建一个目录,而不是在根目录中尝试。
尝试此代码,您将看到所需的响应
服务器:
app.post('/getmessage',(req,res)=>{
const{data}=req.body;
控制台日志(数据);
res.status(200).json({
“成功”:“200响应”,
“res”:“您现在刚刚与服务器通话”
})
})
感谢您的回复,我尝试了此操作,但它再次显示类似***未捕获(承诺中)SyntaxError的错误:输入意外结束***并在控制台中显示未定义。请检查这里的演示项目,它似乎与邮递员配合得很好,但仍然无法获取,但仍然,无法解决客户端上的问题。Postman允许使用这种类型的COR,因为它不是浏览器,但有其他选择。请注意:啊,它正在工作,但我在应用程序中没有收到JSON响应。我在服务器端的代码中,```是的,它正在工作,但我在web中没有收到JSON响应。服务器端路由上的我的代码routes.get('/',(req,res)=>{res.send(“这是post-request”)})routes.post('/',(req,res)=>{const{data}=req.body;console.log(data);res.status(200).json({“成功”:“200响应”,“res”:“您现在刚刚与服务器交谈”})
但在控制台中,它们显示的错误与前面相同,另一个响应是,在网络预览选项卡中,实际上我收到了一条消息,该消息写在get router中,上面写着get RouterMabe,因为来自客户机的数据是nester对象,如果是,请尝试对其进行析构函数。如果您通过电子邮件发送:'pranav@gmail.com'}然后在服务器中使const{email}=req.body;但它的工作与相同来源的客户端很好。我唯一的问题是跨源客户端
document.getElementById('send').addEventListener('click',async()=>{
let data = {lat,lon}
await fetch('https://demoserver-app.herokuapp.com/',{mode:"no-cors"},{
method: 'POST', // or 'PUT'
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
}).then( async (dat) =>{
console.log(res.json())
}).then(res =>{
console.log(res)
})
})