【问题标题】:Only getting first line of file when loading into JavaScript because transfer-encoding: chunked加载到 JavaScript 时仅获取文件的第一行,因为 transfer-encoding: chunked
【发布时间】:2014-03-03 11:55:07
【问题描述】:

我有一个看起来像这样的文件

1 4
2 4
3 6

我像这样将它加载到我的代码中

var file = 'fileName';
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, true);
rawFile.onreadystatechange = function () {
    if(rawFile.readyState === 4) {
        if(rawFile.status === 200 || rawFile.status == 0) {
            var allText = rawFile.responseText;
                console.log(allText);
                setTimeout(otherFunction, 3000);
        }
    }
}
rawFile.send(null);

当我这样做时

console.log(allText);

这是输出:

1 4
//blank line

为什么,我该如何解决?

编辑:我在网络选项卡中看到下载的文件看起来就像 console.log() 输出。但是,服务器上的文件看起来如本问题顶部所述。

编辑:问题在于

transfer-encoding: chunked

我需要“取消设置传输编码”或设置文件的长度。但是我在哪里以及如何做到这一点?没有 PHP 文件,文件直接从我的服务器加载到 JavaScript。

【问题讨论】:

  • 好奇...你检查过网络面板吗?打开您提出的请求并检查下载的文件是否包含您认为包含的内容。
  • transfer-encoding:chunked?
  • //more code 部分很重要,因为 XmlHttpRequest 是异步的 - 请参阅 stackoverflow.com/a/6462019/637889。您能否编辑问题以显示整个函数以及 console.log(allText) 的确切位置?
  • @andyb readyState 为 4,表示完全加载。
  • 我如何确定 transfer-encoding:chunked 是否存在?

标签: javascript php string file parsing


【解决方案1】:

OP sais:Chucked without length 在聊天中。

所以我是裁判

http://en.wikipedia.org/wiki/Chunked_transfer_encoding

“每个块的大小在块本身之前发送,以便接收者可以知道它何时完成接收该块的数据。”

【讨论】:

  • 网络空间的提供者在他的软件中有错误。
猜你喜欢
  • 2018-09-12
  • 2013-09-26
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
相关资源
最近更新 更多