如何从文本文件中获取 var 值?

How to get var value from a text file?

例如,有一个http://test.com/a.txt文件。

['http://a.com', false],
['http://b.com', false],
['http://c.com', false],
['http://d', false]

我想将此文件用作 var 值,如下所示:

<script>
...
var list = [ ***I want to get that .txt file as values here.*** ];
...
</script>

结果

<script>
...
var list = [ 
['http://a.com', false],
['http://b.com', false],
['http://c.com', false],
['http://d', false]
];
...
</script>

我怎样才能做到? 我尝试了下面的 javascript 代码:

jQuery.get('http://test.com/a.txt', function(data) {
// The type o breaking line caracter will vary depending on OS
var values = data.split("\n");       
var List = values[values.length-1];              
});

但是没用...

你不能,因为 cross origin requests policy

但是,如果您提供的另一个 url 是来自服务器的 link,它允许跨源请求,那么 JQuery.get 就可以工作。

但由于这 非常不可能 成为服务器,因此您将获得 Content-Type: text/plain 而不是 JSON 对象。这意味着您必须按照其他答案所示对其进行解析。


破解

如果您不需要将数据与服务器同步,可以使用其他脚本语言将文件下载到您的服务器上,例如bash的curl。然后使用此文件通过 javascript:

进行查询
# bash
curl 'http://test.com/a.txt' -o a.txt
jQuery.get('/a.txt', function(data) {
  /* use data here, may need to be parsed as in other answer */             
});

如果您在与该文件来源相同的页面上执行此操作(请参阅您网站上的 Same Origin Policy), or if that file's server supports cross-origin requests,您可以通过将其包装在 [] 并将 ' 转换为 ":

jQuery.get('http://test.com/a.txt', function(data) {
    var list = JSON.parse("[" + data.replace(/'/g, '"') + "]");
    // ...
});

当然,这假定数据中 ' 引用的字符串 ' 内部没有

如果服务器 不允许 允许的跨源请求,则您无法通过浏览器进行;你需要向你自己的服务器发出请求,然后让你的服务器从另一端请求它。


回复您的评论:

I just tried it but it didn't work. It shows an error message. Uncaught SyntaxError: Unexpected token ; in JSON at position 10233 at JSON.parse ()

那么数据就不是你在问题中显示的那样,因为如果是这样,它就可以工作:

var data =
  "['http://a.com', false],\n" +
  "['http://b.com', false],\n" +
  "['http://c.com', false],\n" +
  "['http://d', false]";
console.log("data:");
console.log(data);
console.log("parsed:");
var list = JSON.parse("[" + data.replace(/'/g, '"') + "]");
console.log(list);
.as-console-wrapper {
  max-height: 100% !important;
}