我是一个绝对的JavaScript新手,但我正在开发一个私人项目。简而言之,我将阅读一些平面文件(.csv / .txt格式)并将值传递给HighCharts。
我几乎掌握了一切(我认为)。
我唯一无法获得的是将文件读入数组,然后选择我需要的位。我可以使用脚本将文件直接传递给Highcharts,但它不够灵活,无法满足我的需要。
无论如何,以下Livedata.txt包含
1370576580,酸度,pH值,8.20,ORP,毫伏,366.99,ReefTemp,摄氏度,25.1,RoomTemp的,摄氏度,21.7,HeaterTemp,摄氏度,25.1
(EPOCH,然后是5个探针的3个数据点(测量,单位,值)的组)
我的(我的片段)脚本是:
var $livedata = new Array();
var currentph;
$.get('livedata.txt', function(data){
livedata = data.split(',');
});
currentph = $livedata[3];
document.write("<b>currentph is </b>=>"+currentph+"<br>");
像这样var currentph = undefined
如果我将document.write语句移动到$ .get(这是一个函数?),它确实包含值8.20
此外,如果我将currentph声明为8.20,则我的脚本的其余部分接受此值。
非常感谢任何帮助/建议。
我将声明16个变量,数组中的每个值为1(仅为了以后读取脚本)。
干杯
答案 0 :(得分:0)
因为$.get
是asyn。在此之后立即致电currentph = $livedata[3];
时,响应尚未到达。当你将document.write
语句移动到$.get
的回调函数时,这就是它的工作原理。同时检查您的拼写错误,$
之前您遗漏了livedata
。如果您需要进行同步通话,可以使用$.ajax
async:false
$.ajax(
{
url:'livedata.txt',
async:false,
success: function(data){
$livedata = data.split(',');
}
}
);
答案 1 :(得分:0)
$
加到变量livedata
前面。$livedata
将是一个空数组; b)如果加载了“livedata.txt”,但没有至少4个逗号分隔值,则$livedata[3]
将是未定义的。 您可能希望使用以下内容重新编写代码:
var $livedata = []; // array literal notation
$.get('livedata.txt', function(data){
$livedata = data.split(',');
});
// in case array does not have an index 3, set value to 'not found'
var currentph = $livedata[3] || 'not found';
document.write("<b>currentph is </b>=>"+currentph+"<br>");