如何从文本文件中获取 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;
}
例如,有一个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;
}