2014-10-27 80 views
0

我使用node https模塊從另一臺服務器獲取auth信息,得到的結果是「result = undefined {a:...,b:...}」,所以我可以'使用JSON.parse解析結果數據,但如果我使用「JSON.parse(body.substr(9))」,我可以得到正確的結果。 欲瞭解更多信息,如果我使用後工具來獲取結果,我得到的結果類型是「application/json」,結果是正確的json對象。我使用下面的代碼來獲取發佈結果。帶有「undefined」前綴的Json結果

var options={ 
    hostname:..., 
    port:null, 
    path:..., 
    method:'post', 
    rejectUnauthorized:false, 
    requestCert:true, 
    agent:false 
    } 
    var https.request(options,function(res){ 
    var body; 

    res.on('data',function(chunk){ 
     body+=chunk; 
    }); 

    res.on('end',function(){ 
     console.log(JSON.parse(body)); 
    }); 
    }); 

回答

1

你應該初始化body爲空字符串:

var body = ''; 

,否則,第一時間

body+=chunk; 

叫,bodyundefined和被連接起來作爲"undefined"字符串:

> var body; 
undefined 
> body += "{}" 
'undefined{}' 
> var body = ''; 
undefined 
> body += "{}" 
'{}' 
+0

嗯,我自己解決了這個問題,問題不在那裏,chunk不是字符串類型,所以沒有必要初始化一個空字符串,但仍然感謝你的答案。 url的返回並不乾淨,這會導致「undefined」問題,firefox的post插件會自己處理它,所以結果在post工具中是正確的。 – sayume 2014-10-27 04:32:40