[英]Ajax post call throwing an error net::ERR_UNKNOWN_URL_SCHEME
我正在尝试通过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 });
有人能对此有所启示吗? 谢谢。
使用JSONP,您只能发送GET请求(JSONP在DOM中插入script
标签)。
您的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)。
可以通过在响应头中设置“ 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)) })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.