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];
});