我正在尝试通过ajax从我的前端到我的Express服务器进行发帖,但出现了错误net :: ERR_UNKNOWN_URL_SCHEME。下面是ajax的代码
function sendSteps(encodedLatLangs) {
$.ajax({
url: 'localhost:3000/route',
type: "POST",
dataType: "jsonp",
contentType: "jsonp; charset=utf-8",
crossDomain:true,
data: JSON.stringify({
steps: encodedLatLangs
}),
success: function (response) {
console.log(done);
},
error: function (request,error) {
console.log('Ajax call gave an error');
}
})};
这就是我如何处理后端对此端点的发帖请求
router.post('/route',function (req, res) {
console.log("Hello Received the Data");
res.send("Hello Received the Data");
//Doing something with the received data
});
有人可以对此进行说明吗? 谢谢。
答案 0 :(得分:0)
使用JSONP,您只能发送 GET 请求(JSONP将script
标签插入DOM)。
您的data
应该是&key=value
字符串,而contentType
是application/javascript
尝试:
function sendSteps(encodedLatLangs) {
$.ajax({
url: 'localhost:3000/route',
dataType: "jsonp",
contentType: "application/javascript; charset=utf-8",
crossDomain: true,
data: 'steps=' + encodeURIComponent(JSON.stringify(encodedLatLangs)),
success: function (response) {
console.log(done);
},
error: function (request, error) {
console.log('Ajax call gave an error');
}
});
};
或使用JSON(如果您是服务器所有者并且可以设置CORS)。
答案 1 :(得分:0)
可以通过在响应标题中设置“ Access-Control-Allow-Origin”来完成。 这样的事情。有关更多详细信息,请访问https://enable-cors.org/server_expressjs.html 而且我们还必须从ajax请求中删除“数据类型”和“内容类型”。
router.route('/route')
.post((req, res, next) => {
controllers
.post(req.body)
.then(data => {
res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
res.send(message.generateMessage(200, '', data))
})
.catch(err => next(err))
})