2015-12-26 66 views
1

我通过AJAX发送到我的服务器的NodeJS,与这个JS在客户端:问题通过AJAX发送JSON数组服务器的NodeJS

function login(){ 
    var array=[]; 
    var jsonData={}; 
    jsonData.user=$('#user').val(); 
    jsonData.pass=$('#pass').val(); 
    array.push(jsonData); 
    console.log(JSON.stringify(array)); 
    $.ajax({ 
     method:'POST', 
     url: 'auth', 
     dataType: 'application/json', 
     data: JSON.stringify(array) 
    }).done(function(msg){ 
     alert("Data Saved: " + msg); 
    }); 
} 

正如你所看到的,之前发送AJAX,浏览器的输出控制台是:

[{"user":"User001","pass":"SecretPassword"}] 

在服务器端,我有这样的代码:

router.post('/', function(req, res, next){ 
    console.log(req.body); 
    // { '[{"user":"User001","pass":"SecretPassword"}]': '' } 

    console.log(JSON.parse(req.body)); 
    // {"[{\"user\":\"User001\",\"pass\":\"SecretPassword\"}]":""} 


    res.sendStatus(202); 
} 

但是,如果我测试与邮差,我本身这个Web服务rver接收正确的JSON数据: Screen capture

请,没有人帮我吗?,我试图解决这个大约2天:(

+0

你应该将内容类型设置为JSON,如果这是您要发送什么 – Musa

+0

是的,它是。请参阅第一次的代码片段: 数据类型:“应用/ JSON”, – Cesarin

+0

这不是内容类型,数据类型是其他 – Musa

回答

0

不要字符串化数据,它应该是一个对象,这样你就可以直接发送jsonData:

function login(){ 
    var array=[]; 
    var jsonData={}; 
    jsonData.user=$('#user').val(); 
    jsonData.pass=$('#pass').val(); 
    array.push(jsonData); 
    console.log(JSON.stringify(array)); 
    $.ajax({ 
     method:'POST', 
     url: 'auth', 
     dataType: 'application/json', 
     data: jsonData // << here 
    }).done(function(msg){ 
     alert("Data Saved: " + msg); 
    }); 
} 
+0

不,我试过了,不能解决问题。答案是这样的:contentType:'application/json; charset = utf-8'在ajax调用中 – Cesarin

相关问题