jquery.从文本文件中获取和检索变量

jquery to use .get and retrieve variables from text file

本文关键字:检索 变量 获取 文本 文件 jquery      更新时间:2023-09-26

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

示例:

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(时,它会显示变量未设置。

以下是我认为您想要的:

$.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"
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

代码向全局名称空间添加了许多变量。此外,它会引发错误,因为$.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外,其他语言库也支持JSON,如PHP、python、perl、java等。

$.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(' '); 
});

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