繁体   English   中英

Ajax发布呼叫引发错误net :: ERR_UNKNOWN_URL_SCHEME

[英]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字符串, contentTypeapplication/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.

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