【发布时间】:2018-01-01 05:05:22
【问题描述】:
我正在尝试通过 nginx 向 node.js 微服务发送 ajax 发布请求。请求如下:
$.post('http://localhost:80/api/signup', formData, function( data, status) {
console.log(JSON.stringify(data));
console.log(JSON.stringify(status));
}).done(function(data, status) {
alert( "second success" );
console.log(JSON.stringify(data));
console.log(JSON.stringify(status));
})
.fail(function(data, status) {
console.log('error');
console.log(JSON.stringify(data));
console.log(JSON.stringify(status));
})
.always(function(data, status) {
console.log(JSON.stringify(data));
console.log(JSON.stringify(status));
console.log('fiished');
});
请求到达微服务。但响应如下(始终是错误函数):
“数据”总是:
{"readyState":0,"status":0,"statusText":"error"}
“状态”总是:
error
这不是成功或失败时的预期响应。 我该如何解决这个问题?
此外,一旦提交,“formData”参数就会在 url 上显示为查询。我怎样才能阻止它?
更新*
我也尝试过添加event.preventDefault();,但现在它给了我以下信息:
XMLHttpRequest cannot load http://localhost:3000/api/signup. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
{"readyState":0,"status":0,"statusText":"error"}
我也试过了:
$.ajax({
type: "POST",
url: "http://localhost:3000/api/signup",
data: JSON.stringify(formData),
success: function(dataString) {
console.log(JSON.stringify(dataString));
}, error: function(error) {
console.log(JSON.stringify(error));
}
});
但是得到了和上面一样的No 'Access-Control-Allow-Origin' header is present on the requested resource。
更新 "No 'Access-Control-Allow-Origin' header is present on the requested resource" 上有一个有效且可能更详细的答案。但是,我发现我在这里接受的答案更加直接和明确。
【问题讨论】:
-
听起来您并没有阻止您的表单正常提交(即
event.preventDefault()) -
现在它给了我
No 'Access-Control-Allow-Origin' header is present错误 -
@Phil 请阅读问题更新。