2015-12-26 72 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

相關問題