2012-07-19 139 views
1

我做了一個快速的Ajax驅動頁面,用於粘貼一些文本並運行yuicompressor。然而,當我將stdout發送回我的頁面時,輸出工作得很好,我在<字符處關閉了數據。例如,當我運行在此壓縮機:Node.js標準輸出編碼問題

function Enum(values){ 
    for(var i = 0; i < values.length; ++i){ 
     this[values[i]] = i; 
    } 
    return this; 
} 

我得到一個壓縮版本,沒問題。現在,當我把這個給我的網頁像這樣:

exec(command, function(err, stdout, stderr) { 
    console.log(stdout); 
    res.writeHead(200, {'content-type': 'text/plain'}); 
    //res.write(decodeURIComponent(escape(stdout))); 
    //res.write(qs.escape(stdout)); 
    res.write(stdout); 
    res.end('\n');  
}); 

這總是引起越來越發送的數據被截斷在<導致:

function Enum(a){for(var b=0;b 

console.log(stdout)顯示完美,所以它的直到它發送給客戶端,它纔會被切斷。

當我嘗試編碼時,我能夠讓整個輸出到我的頁面全部逃脫出來,但是在前端解碼它導致了相同的問題。

這裏的Ajax調用:

if(ready) { 
    $.ajax('/get' + args + '/', { 
     type: 'GET', 
     dataType: 'text', 
     success: function(data) { $('pre').html(data) }, 
     error: function() { console.log('error retrieving data') }  
    }); 
} 

回答

2

它看起來像你的困難是,你告訴了jQuery使用JavaScript塊爲HTML,它的「切斷」的第一個HTML元字符,<pre標記的內容仍然是HTML,只是空白處理方式不同。致電$('pre').text(data),你應該沒問題。

+0

Yargg!謝了哥們。這樣簡單的解決方案! – grep 2012-07-19 15:31:12