使用jQuery从其他页面获取数据

时间:2014-02-14 16:52:00

标签: jquery

我试图通过$.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中,那么它就会显示正常。

代码出了什么问题?

1 个答案:

答案 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));
}