我试图通过$.get
从另一个页面获取数据,但我无法读取函数外的值。这是我的代码:
$.get('data.php?<?php echo ($params); ?>', null, function(tsv) {
var lines = [];
traffic = [];
try {
// split the data return into lines and parse them
tsv = tsv.split(/\n/g);
jQuery.each(tsv, function(i, line) {
line = line.split(/\t/);
date = Date.parse(line[0] +' UTC');
traffic.push([
date,
parseFloat(line[1].replace(',', ''), 10)
]);
});
} catch (e) { }
options.series[0].data = traffic;;
});alert(JSON.stringify(options.series[0].data, null, 4));
问题是options.series[0].data
显示为null但是如果我将警报放在函数tsv中,那么它就会显示正常。
代码出了什么问题?
答案 0 :(得分:0)
当您使用$.get
或$.ajax
时,您会设置一个callBack函数。您通过“获取”获得的数据将传递给变量tsv
中的函数。此变量仅在函数内可见。但是,由于$.get
是一个异步方法,alert
的行在获取数据之前正在执行。
要使用从外部检索的数据,必须将其放在全局变量,使用数据或sessionStorage中。这一切都取决于你想要做的用途。
你可以这样做:
var myOptions="";
$.get('data.php?<?php echo ($params); ?>', null, function(tsv) {
....
options.series[0].data = traffic;
myOptions=options;
myStuff();
});
function myStuff(){
if (myOptions!=="") //chek if has been set
alert(JSON.stringify(myOptions.series[0].data, null, 4));
}