我在文本文件中有一个名单列表
示例:
user1 = Edwin Test //first line of text file
user2 = Test Edwin //second line of text file
我希望每个行数据都设置为变量:
user1 and user2 //so that after jquery loads I can user $user1 and it will give Edwin Test
文本文件与jquery文件位于同一文件夹中。
我的代码:
$.get('users.txt', function(data) {
alert(data);
var lines = data.split("\n");
$.each(lines, function() {
var line=perLine[i].split(' ');
});
});
当我在本地使用mamp加载页面时,我能够使用警报查看文件中的内容,但是当我在控制台中键入例如(user1)时,它表示该变量未设置。
答案 0 :(得分:1)
这就是我认为你想要的东西:
$.get('users.txt', function(data) {
var lines = data.split("\n");
$.each(lines, function(i) {
var line = lines[i].split(' = ');
window[line[0]] = line[1];
});
});
稍后......
console.log(user1); // "Edwin Test"
答案 1 :(得分:0)
代码向全局命名空间添加了许多变量。此外,它会引发错误,因为$ .get是异步的,因此需要在注释中显示的依赖于现有变量的代码才能保证工作。这被许多人认为是不好的风格,但这里有如何做到这一点:
$.get('users.txt', function(data) {
alert(data);
var lines = data.split("\n");
var i,l=lines.length,parts;
for(i=0;i<l;++i){
parts = lines[i].split('=');
if (parts.length == 2){
try {
// window is the global object. window['x']=y sets x as a global
window['$'+parts[0]] = parts[1]; // call the var $something
} catch(e) {}; // fail silently when parts are malformed
}
// put any code that relies on the variables existing HERE
}
});
以下是您可能会做的事情:
将数据放入对象中。将对象传递给包含下一步的函数showVars(vars)
。
$.get('users.txt', function(data) {
alert(data);
var lines = data.split("\n");
var i,l=lines.length,parts, vars = {};
for(i=0;i<l;++i){
parts = lines[i].split('=');
if (parts.length == 2){
try {
vars[parts[0]] = parts[1];
} catch(e) {}; // fail silently when parts are malformed
}
showVars(vars); // put any code that relies on the variables existing HERE
}
});
function showVars(vars){
// put whatever uses/displays the vars here
}
另一种方法可以更轻松地更改数据格式。如果您可以使用这种格式存储数据,称为JSON:
['Edwin Test','Test Edwin','Someone Else','Bug Tester']
然后解析器要么是单行array = JSON.parse(jsonString)
,要么有时是由jQuery为你完成并放入数据。 JSON可以存储各种数据,除了Javascript之外,还有其他语言库支持它,如PHP,python,perl,java等。
答案 2 :(得分:0)
var users = {};
var lines = data.split("\n");
$.each(lines, function (key, value) {
var prep = value.split(" = ");
users[prep[0]] = prep[1];
});
输出user1您可以调用users.user1
答案 3 :(得分:-1)
$.get('users.txt', function(data) {
alert(data);
var lines = data.split("\n");
for(var i = 0 ; i < lines.length; i++){
var line=lines[i].split(' ');
});
});
我认为你错过了循环中的i
。
我想你也可以做
$.each(lines, function(i) {
var line=lines[i].split(' ');
});
无论如何,我可能会建议您在服务器上执行此字符串拆分,并以正确/准备好的形式将其传递给客户端。