关于使用Ajax发布请求的问题

时间:2018-08-14 10:45:08

标签: javascript jquery ajax vert.x

我是ajax和jquery的新手。关于SO的问题,我经历了一些讨论,但没有解决任何问题。我在这里遇到两个错误。

OPTIONS http://localhost:8082/xxx/xxx/xxxx 404 (Not Found)

Failed to load http://localhost:8082/xxx/xxx/xxxx: Response for preflight does not have HTTP ok status.

这是我的简单代码

$.ajax({
    url: url,
    crossDomain: true,
    type: "POST",
    data: JSON.stringify(queryData),
    contentType: "application/json"
}).done(function(msg){
    $("#thank_you_comment").text("Thank you");
    $("button").text("GOT IT");
    queryData.id = msg.id
    $.ajax({
        url: another_url,
        crossDomain: true,
        type: "POST",
        data: JSON.stringify(queryData),
        contentType: "application/json"
    }).done(function(message){
        event.preventDefault();
        console.log(message);
        return;
    });
});

我正在进行的第二个ajax调用是在vertx上进行的本地调用。而且我非常确定另一台本地服务器已启动并正在运行。

但是我不确定为什么会出现未找到的错误。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

感谢您的上述评论,这有助于我理解问题。为了解决此错误,我没有直接从客户端发布请求,而是将请求发送到服务器端,然后从服务器端调用该请求,这完全消除了CORS问题,并提供了对数据的更多控制。

在客户端,我做到了

$.ajax({
        url: /post/request-to,
        type: "POST",
        data: JSON.stringify(queryData),
        contentType: "application/json"
    }).done(function(message){
        event.preventDefault();
        console.log(message);
        return;
    });

然后在服务器脚本中

app.post('/post/request-to', function(req, res){
    try{
        request.post({
            headers: {'content-type' : 'application/json'},
            url: "http://some/url",
            body: JSON.stringify(req.body)
        }, function(error, response, body){
            if(error){
                console.log("Error: "+error)
            }else{
                res.send(body)
            }
        });
        console.log(req.body);
    }catch(err){
        console.log(err)
    }
});