我正在與一個錯誤鬥爭,如果可能的話,我想要一個幫助。我需要從我的路由器發送一個數組:發送/路由:/單詞到一個javaScript文件,發送到該路由(「/單詞」)一個數組與像(問)。因此,在這條路徑(「/ words」)中,我向API請求(ask),然後我可以從數據庫中獲取它的所有值。錯誤發送後無法設置標題。 (res.send())
然後我發送一個數組回到所有由「return res.send(array)」開始的文件。好的是工作。但是,我的問題是在數組中有兩個單詞發送到路由器/路由時開始的,即使請求運行良好,我可以從API獲取這些單詞的信息(請求,a),當它運行「return res.send(array)」行我有一條消息錯誤,指出「發送錯誤後無法設置標題」。
這個解釋是否足夠理解?
在此先感謝!
router.get("/words", function(req, res) {
var wordsToBeSearched = req.query.str;
var dictionary = [];
for(var i = 0; i < wordsToBeSearched.length; i++) {
var url = "http://www.dictionaryfake.com/api/xml/" + wordsToBeSearched[i];
request(url, function(error, response, body) {
if(!error && response.statusCode == 200) {
parseString(body, function (err, result) {
var word = (JSON.stringify(result["entry_list"]["entry"][0]["ew"][0]));
var sound = (JSON.stringify(result["entry_list"]["entry"][0]["sound"][0]["wav"][0]));
var symbol = (JSON.stringify(result["entry_list"]["entry"][0]["pr"][0]));
var singleWord = {word: word.replace(/"/g,''), symbol: symbol.replace(/"/g,''), sound: sound.replace(/"/g,'')};
dictionary.push(singleWord);
if(i === wordsToBeSearched.length) {
return res.send(dictionary);
};
};
};
};
};
};
我們必須查看代碼的相關部分以幫助您解決此錯誤。這種類型的錯誤通常在處理異步請求的方式上是錯誤的,但爲了就您需要修復的問題提供建議,我們需要查看您的實際代碼。由於您是新手,因此有關代碼的***問題必須包含相關代碼***。在回答具體問題時,我們大約比使用實際代碼時要高出100倍,這比回答可能有數千個可能原因的理論問題要好。 – jfriend00
您在評論中有一些有用的代碼,但格式不正確。嘗試編輯您的問題並將代碼放在問題中。最基本的問題是你在'for'循環中調用'res.send',這意味着它不止一次被調用。 –
然後,請使用您問題下方的「編輯」鏈接將代碼添加到您的問題,然後正確格式化它。無論如何,註釋中的多行代碼通常是不可讀的,代碼應該在問題本身中。這裏是關於堆棧溢出的[如何格式化代碼](https://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)。 – jfriend00