gpt4 book ai didi

javascript - 如何在 JavaScript 中加载文本文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:13 25 4
gpt4 key购买 nike

我正在创建一个简单的 WebGL 项目,需要一种加载模型的方法。我决定使用 OBJ 格式,所以我需要一种方法来加载它。该文件(将要)存储在服务器上,我的问题是:JS 中的一个如何加载到文本文件中并逐行扫描它,逐个标记(就像 C++ 中的流)?我是 JS 的新手,因此我的问题。方法越简单越好。

更新:我使用了您的解决方案,broofa,但我不确定我是否做对了。我从你写的 forEach 循环中的文件加载数据,但在它之外(即在你的所有代码之后)我一直在填充数据的对象是“未定义的”。我究竟做错了什么?这是代码:

var materialFilename;

function loadOBJModel(filename)
{
// ...

var req = new XMLHttpRequest();
req.open('GET', filename);
req.responseType = 'text';
req.onreadystatechange = function()
{
if (req.readyState == 4)
{
var lines = req.responseText.split(/\n/g);
lines.forEach(function(line)
{
readLine(line);
});
}
}
req.send();

alert(materialFilename);

// ...
}

function readLine(line)
{
// ...

else if (tokens[0] == "mtllib")
{
materialFilename = tokens[1];
}

// ...
}

最佳答案

您可以使用 XMLHttpRequest获取文件,假设它来自与您的主网页相同的域。如果没有,并且您可以控制托管文件的服务器,则可以启用 CORS没有太多的麻烦。例如

要逐行扫描,可以使用 split()。例如。像这样的……

var req = new XMLHttpRequest();
req.open('GET', '/your/url/goes/here');
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
var lines = req.responseText.split(/\n/g);
lines.forEach(function(line, i) {
// 'line' is a line of your file, 'i' is the line number (starting at 0)
});
} else {
// (something went wrong with the request)
}
}
}

req.send();

关于javascript - 如何在 JavaScript 中加载文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13574930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com