我是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上进行的本地调用。而且我非常确定另一台本地服务器已启动并正在运行。
但是我不确定为什么会出现未找到的错误。
任何帮助将不胜感激。
答案 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)
}
});