【发布时间】:2015-07-19 05:55:15
【问题描述】:
我正在尝试在 js 中实现一个算法。我想从文本文件中读取数据(逐行)无需选择输入,只需在源代码中设置文件路径即可。我已经尝试过stackoverflow上的所有方法,它们都不适合我。
要读取的文件正好在我的本地主机上。
谁能帮忙?
---------更新----------
这是我的代码,出现错误:
主线程上的同步 XMLHttpRequest 已被弃用,因为它会对最终用户的体验产生不利影响。
我要读取的文件正好在我的 localhost 文件夹中。
<html>
<head>
</head>
<body>
<script type="text/javascript">
var rules = {};
var left, right1, right2, probability;
// read rule file and process it into rules format
function readTextFile(file) {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function () {
if(rawFile.readyState === 4) {
if(rawFile.status === 200 || rawFile.status == 0) {
var allText = rawFile.responseText;
allText = allText.split("\n");
allText = allText.splice(0, allText.length-1);
allText.forEach(function (rule) {
rule;
left = rule[0];
probability = parseFloat(rule.slice(rule.indexOf(":")+2));
rules[left] ? rules[left] : rules[left] = {}; // init left
if (rule[6] == " ") {
right1 = rule[5];
right2 = rule[7];
rules[left][right1] ? rules[left][right1] : rules[left][right1] = {}; // init right1
rules[left][right1][right2] = probability;
} else {
right1 = rule.slice(5, rule.indexOf(":") - 1);
rules[left][right1] = probability;
}
});
}
}
}
rawFile.send(null);
}
readTextFile("rules.txt");
console.log(rules);
</script>
</body>
</html>
----------更新2------------- -
规则是这样的:
A -> D C : 0.00688348825155337
A -> D M : 0.03345377673232689
A -> G F : 0.43257400994797
A -> L C : 0.4225829540437112
A -> L H : 0.014080236090023698
A -> L M : 0.06637630954705294
A -> N M : 0.001218212356843953
A -> O M : 0.022583482305501317
【问题讨论】:
-
你能分享你试过的代码吗?它将帮助我们提供解决方案/建议..
-
还有什么错误?
-
如果文件在您的服务器上,您可以使用 AJAX 请求检索整个文件。你必须自己把它分成几行。如果文件在您的本地计算机上,浏览器安全性将阻止您在没有选择输入的情况下读取它。
-
大家好,我已经更新了我的代码,目前我可以使用这种方法读取文件,但是有一个新描述的警告。你能帮我修一下还是再给我一个独奏?
标签: javascript