jquery使用.get和从文本文件中检索变量

时间:2014-05-15 20:10:03

标签: javascript jquery

我在文本文件中有一个名单列表

示例:

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)时,它表示该变量未设置。

4 个答案:

答案 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

JSFiddle

答案 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(' '); 
});

无论如何,我可能会建议您在服务器上执行此字符串拆分,并以正确/准备好的形式将其传递给客户端。