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

时间:2018-09-30 00:31:16

标签: javascript ajax express

我正在尝试通过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
});

有人可以对此进行说明吗? 谢谢。

2 个答案:

答案 0 :(得分:0)

使用JSONP,您只能发送 GET 请求(JSONP将script标签插入DOM)。

您的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)。

答案 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))
    })