将数据发送到节点

时间:2016-09-19 15:15:44

标签: javascript node.js express

我正在使用

将数据发送到服务器
function post(url) {
  return new Promise(function(resolve, reject) {
    var req = new XMLHttpRequest();
    req.open('POST', url);
    req.onload = function() {
      if (req.status == 200) {
        resolve(req.response);
      }
      else {
        reject(Error(req.statusText));
      }
    };
    req.onerror = function() {
      reject(Error("Network Error"));
    };
    var data = moldData();
    alert(JSON.stringify(data , null , 2 ))
    req.send( data );
  });
}

send.addEventListener('click', function(){
    post('http://localhost:8080/order').then(function(){
        alert('send')
    }).catch(function(e){
        alert(e)
    })
} 

在服务器端我正在使用

app.post('/order', function( req , res ){
  console.log('sup')
  console.log("=================\n" , req.body)
})

但无论何时发布,承诺都不会得到解决或拒绝,例如 然后也没有捕获被执行。在服务器端,它只是打印

“===============” “[对象]”

我正在使用身体解析器,例如

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.raw())
app.use(bodyParser.text())

我对后端开发还不熟悉,为什么会发生这种情况?是什么导致这个?使用

console.log(JSON.stingify(req.body,null,2))

产生相同的输出。

感谢您的帮助!

// 虽然问题的一部分得到了回答。主要问题是为什么没有打印req.body,而是打印[Object object]。

2 个答案:

答案 0 :(得分:-1)

您的服务器端代码会记录两件事然后停止。

浏览器等待一段时间,最终超时并拒绝承诺。

你必须发送回复!

查看hello world example

res.send('Hello World!');

答案 1 :(得分:-1)

您需要在记录时对服务器响应进行字符串化。

console.log("=================\n" , JSON.stringify(req.body))

如果你想"漂亮的打印"输出,你可以这样做:

console.log("=================\n" , JSON.stringify(req.body, null, 4))