通过Nginx向Node.js发送Ajax POST没有得到正确的响应

时间:2017-07-26 04:19:16

标签: node.js ajax nginx

我正在尝试通过nginx向node.js微服务发送ajax post请求。要求如下:

$.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”参数在提交后在网址上显示为查询。我怎么能阻止它?

更新*

我还尝试添加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"上有一个有效且可能更详细的答案。但是,我发现我在这里接受的答案更加直接和明确。

1 个答案:

答案 0 :(得分:0)

您是从浏览器还是localhost执行ajax请求?如果您从浏览器执行它可能会CORS问题。如果您希望能够从浏览器执行该ajax请求,则应修改服务器配置/代码以允许跨源HTTP请求。

这与您的问题类似。 CORS issue in Jquery Ajax Post