Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要使用的jquery。从文本文件获取和检索变量_Javascript_Jquery - Fatal编程技术网

Javascript 要使用的jquery。从文本文件获取和检索变量

Javascript 要使用的jquery。从文本文件获取和检索变量,javascript,jquery,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文件位于同一文件夹中 我的代码: $

我有一个文本文件中的名字列表

例如:

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) { 
    alert(data);
    var lines = data.split("\n");

    for(var i = 0 ; i < lines.length; i++){
      var line=lines[i].split(' ');
    });
});

无论如何,我可能会建议您改为在服务器上执行此字符串拆分,并以正确/就绪的形式将其交付给客户端。

以下是我认为您需要的:

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

代码向全局名称空间添加了许多变量。此外,它还会引起bug,因为$.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
    }
});
还有另一种更容易更改数据格式的方法。如果可以将数据存储为这种称为JSON的格式:

['Edwin Test'、'Test Edwin'、'Someone other'、'Bug Tester']

然后,解析器要么是一行的
array=JSON.parse(jsonString)
,要么有时由jQuery完成并放入数据。JSON可以存储各种数据,除了Javascript之外,其他语言库也支持JSON,如PHP、python、perl、java等

var users = {};
var lines = data.split("\n");
$.each(lines, function (key, value) {
    var prep = value.split(" = ");
    users[prep[0]] = prep[1];
});
要输出user1,您需要调用users.user1


您应该将接收到的数据连接起来,或将此处代码的一半存储在阵列中。。。。一个不执行任何操作的函数(但error
perLine
未定义)…按每行拆分变量您可以将变量命名为
$user1
$user2
,等等。如果您愿意,但是(i)不要求变量名称必须以
$
开头。和(ii)它错过了将变量封装到对象中的机会。或者在他的例子中,
$。每个(行,函数(i,val){var line=perLine[i].split(“”);})我想我们同时按下了按钮:)
   $.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
    }
var users = {};
var lines = data.split("\n");
$.each(lines, function (key, value) {
    var prep = value.split(" = ");
    users[prep[0]] = prep[1];
});