我想通过nginx发送ajax post请求到node.js microservice。要求如下:Ajax通过Nginx POST到Node.js没有得到正确的响应
$.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()') – Phil
现在它给了我'不'Access-Control-Allow-Origin'头'存在错误 – TamerB
@Phil请阅读问题更新。 – TamerB