2017-07-26 125 views
0

我想通过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"有效和可能更详细的解答。但是,我发现我在这里接受的答案更加直接和明确。

+0

听起来你并不妨碍你的表单正常提交(即'event.preventDefault()') – Phil

+0

现在它给了我'不'Access-Control-Allow-Origin'头'存在错误 – TamerB

+0

@Phil请阅读问题更新。 – TamerB

回答

0

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

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

+0

我更新了我的后端,并在请求中添加了一个contentType,并删除了formData的JSON.stringify()。现在它可以工作。谢谢@ 88jayto – TamerB