1

我制作了一个快速的 ajax 驱动页面,用于粘贴一些文本并运行 yuicompressor。<输出效果很好,但是,当我将标准输出发送回我的页面时,我遇到了数据在字符处截断的问题。例如,当我对此运行压缩器时:

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') }    
    });
}
4

1 回答 1

2

看起来你的困难在于你告诉 jQuery 使用一段 JavaScript 作为 HTML,并且它在第一个 HTML 元字符处“切断”,<. 标签的内容pre仍然是 HTML,只是空格的处理方式不同。打电话$('pre').text(data),你应该没事。

于 2012-07-19T15:25:44.253 回答