Javascript highchart传递变量

Javascript highchart传递变量,javascript,jquery,variables,Javascript,Jquery,Variables,我使用$.get获取在test2.php中生成的值,当我执行警报(数据)时,我得到了我想要的确切值,但我不知道如何存储变量y中获得的值: var series = this.series[0]; setInterval(function() { $.get('test2.php', function(data) { alert(data); }); var y = data; // NOT WORKING !

我使用
$.get
获取在
test2.php
中生成的值,当我执行
警报(数据)
时,我得到了我想要的确切值,但我不知道如何存储变量
y
中获得的值:

   var series = this.series[0];  
   setInterval(function() {

      $.get('test2.php', function(data) {
         alert(data);
      });

      var y = data;  // NOT WORKING !
      var x = (new Date()).getTime();     

      series.addPoint([x, y], true, true);
    }, 1000);

我是JavaScript新手,所以提前感谢

Javascript使用函数作用域,Ajax是异步的,
data
不在Ajax调用后执行的代码的作用域中。放置
var y=数据
和回调外部的后续代码导致回调在接收到服务器响应之前执行

在回调中添加此代码将导致在收到来自服务器的响应并且
数据实际包含响应时执行回调

   var series = this.series[0];  
   setInterval(function() {

      $.get('test2.php', function(data) {
         alert(data);
         var y = parseInt(data);  // NOT WORKING !
         var x = (new Date()).getTime();     

         series.addPoint([x, y], true, true);
      });

    }, 1000);

$.get
可能是jQuery AJAX调用,其中A代表异步。事件的顺序是

  • 调用
    $.get
    ,等待响应,并在响应到来后调用第二个参数函数
  • var y=数据,但尚未发送设置数据的响应(功能的其余部分(
    设定点
    也已处理)
  • 响应来自服务器并设置
    数据
    (太晚了)
  • 有两种解决办法:

    • 或者将代码放入第二个参数中的
      $函数中。get
      函数(正如Kevin Bowersocks所建议的)
    • 或者执行同步调用。jQuery在这方面对您没有帮助,我也不推荐这样做:浏览器会冻结,直到响应丢失为止,如果响应丢失,则需要重新加载页面

      var xhr = new XMLHttpRequest();
      xhr.open("GET","test2.php",false); // false = synchronous call
      xhr.send(); // browser freezes until the response, let's hope not for long
      var y = xhr.response; // response is ready here for synchronous calls
      

    @Falcon,签出
    parseInt
    parseFloat
    将字符串转换为数字