Javascript Node js POST方法没有响应,但在POSTMAN上运行良好

Javascript Node js POST方法没有响应,但在POSTMAN上运行良好,javascript,node.js,xmlhttprequest,client-server,Javascript,Node.js,Xmlhttprequest,Client Server,我在localhost:3000上有一个节点应用程序,配置为: var cors = require('cors'); var app = express(); // Add headers app.use(function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); app.use(cors()); next(); }); 这里我有我的post方法: router.post('/sav

我在localhost:3000上有一个节点应用程序,配置为:

var cors = require('cors');
var app = express();

// Add headers
app.use(function (req, res, next) {

  res.header('Access-Control-Allow-Origin', '*');
  app.use(cors());

  next();
});
这里我有我的post方法:

router.post('/saveragnarokuser',function(req,res,next){

    console.log('######################### Iniciando saveragnarokuser.');

    UserRagnarokController.addUser(req.body,function(err,count){
        if(err){
            console.log('entrei aqui error: ' + err);
            res.json(err);
        }
        else{

            console.log('entrei aqui ok');

            var userObj = {
                response: "OK"
             };

            res.json(userObj);
        }
    });
});
当我试图通过html/javascript访问此路由时,服务器端控制台显示:

OPTIONS /user-ragnarok-controller/saveragnarokuser/ 200 0.565 ms - 4
######################### Iniciando saveragnarokuser.
myReqbody: {"userid":"bruna","userpass":"teste","email":"acosta.aluiz@gmail.com","sex":"M"}
POST /user-ragnarok-controller/saveragnarokuser/ - - ms - -
entrei aqui ok
这是我使用XMLHttpRequest的javaScript(客户端)方法:

var invocation = new XMLHttpRequest();

function handler() {
    if(invocation.readyState === XMLHttpRequest.DONE && invocation.status === 200) {
        alert('entrei aqui');
        console.log(invocation.responseText);
    } else 
        alert('nao foi hj');
}

function saveUser() {   
    alert('face');
    var eml = document.getElementById('emailInputRegister');
    var user = document.getElementById('userInputText');
    var sx = document.getElementById("sexInputSelected");
    var selectedSex = sx.options[sx.selectedIndex].value;
    var pwd = document.getElementById("passwordInputRegister");

    var uri = 'http://localhost:3000/user-ragnarok-controller/saveragnarokuser/';
    var body = {
        'userid': user.value,
        'userpass': pwd.value,
        'email': eml.value,
        'sex': selectedSex
    };

    invocation.open('POST', uri, true);

    invocation.setRequestHeader('Content-Type', 'application/json');
    invocation.onreadystatechange = this.handler;
    invocation.send(JSON.stringify(body));
}
}

当我和邮递员连接到这条线路时,一切都正常。我注意到邮递员的请求没有连接选项日志

######################### Iniciando saveragnarokuser.
myReqbody: {"userid":"1234658","userpass":"teste","email":"acosta.aluiz@gmail.com","sex":"M"}
entrei aqui ok
POST /user-ragnarok-controller/saveragnarokuser/ 200 10089.318 ms - 17
检查

试试下面的

invocation.send(JSON.stringify(body));

据我所知,您的代码试图使用
body.toString()
发送请求。

显示的
POST/user ragnarok controller/saveragnarokuser/400 26.881 ms-936
响应表明,对POST请求的响应的HTTP状态代码是400错误请求错误。这与CORS无关,但表示服务器表示请求的格式与服务器期望的格式不符。检查服务器上的服务器日志以查找
/user ragnarok controller/saveragnarokuser/
端点,并查找记录在那里的错误消息,这些消息提供了有关请求错误的更具体信息。body string对象发生了一些变化。现在服务正在工作,数据保存在mySQL上,但响应在浏览器上继续。在日志服务器上,响应更改为OPTIONS/user ragnarok controller/saveragnarokuser/200 0.565 ms-4。myReqbody:{“userid”:“bruna”,“userpass”:“teste”,“email”:“acosta”。aluiz@gmail.com,“sex”:“M”}POST/user ragnarok controller/saveragnarokuser/--ms---。POST与--in--ms的状态不符
invocation.send(JSON.stringify(body));