2017-04-02 67 views
0

从客户端的JavaScript我发送3个变量每ajax后,并在服务器上我尝试查看客户端的JSON内容,它显示我未定义,我不知道问题出在哪里,我附上代码(重构):我没有得到在json中接收发布数据

文件:./routes/index.js

'use strict' 

const express = require('express') 
const user_controller = require('../controller/user') 

const api = express.Router() 


// pagina de Inicio 
api.get('/index',function(req,res){ 

    res.render('index') 
}) 

// Gestion de usuarios 
api.get('/usuarios',user_controller.getAllUsers) 
api.post('/usuarios',user_controller.newUser) 
api.get('/usuario',user_controller.getUser) 
api.post('/logear',user_controller.logear) 
api.post('/registrar',user_controller.registrar) 

module.exports = api 

文件:./controller/user.js

function registrar(req,res){ 

var bcrypt = require('bcrypt'); 
var BCRYPT_SALT_ROUNDS = 12; 

var user = req.body.user; 
var email = req.body.email; 
var pass = req.body.pass; 

console.log('info: ' + user + ' ' + email + ' ' +pass); 
//console.log('perro: ' + req.body); 

// encriptamos la contraseña 
bcrypt.genSalt(10, function(err, salt) { 

    if(error) throw error; 

    else{ 

     bcrypt.hash(pass, BCRYPT_SALT_ROUNDS, function(err, hash) { 
      pass = hash; 
     }); 
    } 

}); 

//bcrypt.hash(pass, BCRYPT_SALT_ROUNDS).then(function(hashedPassword) {pass = hashedPassword}); 

conexion_db.query({ ... etc 

文件:./app.js

'use strict' 

//configuracion del servidor 
const express = require('express'); 
const bodyParser = require('body-parser'); 
const app = express(); 


app.use(bodyParser.urlencoded({extended:true})); 
app.use(bodyParser.json()); 
app.set('view engine','jade'); 
app.set('views', __dirname + '/views'); 
app.use(express.static(__dirname + '/public')); 

const api = require('./routes'); 
app.use('/api',api); 


module.exports = app 

文件:client.js

$.ajax({ 
      url: 'http://localhost:3000/api/registrar', 
      data: JSON.stringify({'user': $('#nick').val(),'email': $('#email').val(),'pass': $('#pass').val()}), 
      type: "POST", 
      dataType: 'json', 
      success: function(json) { 
       console.log("json: " + json.estado); 
       console.log("json: " + json.user); 
       console.log("json: " + json.pass); 

我得到CMD的服务器上,这样的:信息:未定义未定义未定义

回答

0

的bodyParser中间件不能处理JSON数据,因为你没有设置ContentType参数的ContentType.jQuery ajax默认值为“application/x-www-form-urlencoded;字符集= UTF-8" 。但您要发送的JSON type.You需要的ContentType设置为应用数据/ JSON。

你也可以给PlainObject的数据参数。

+0

非常感谢你,这是真的,我错过了POST请求的内容类型,问候:) –