【问题标题】:Ajax POST to Node.js through Nginx not getting correct responseAjax POST 通过 Nginx 到 Node.js 没有得到正确的响应
【发布时间】: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" 上有一个有效且可能更详细的答案。但是,我发现我在这里接受的答案更加直接和明确。

【问题讨论】:

标签: node.js ajax nginx


【解决方案1】:

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

这看起来与您的问题相似。 CORS issue in Jquery Ajax Post

【讨论】:

  • 我更新了我的后端,还在请求中添加了一个 contentType 并删除了 formData 的 JSON.stringify()。现在它起作用了。谢谢@88jayto
猜你喜欢
  • 2016-01-09
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多