2

$.getで生成された値を取得するために を使用しましたtest2.php。実行するalert(data)と、必要な正確な値が得られますが、変数で取得した値をストックする方法がわかりません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が初めてなので、よろしくお願いします..!

4

2 に答える 2

1

$.getおそらく A はAsynchronousを表す jQuery AJAX 呼び出しです。イベントの順番は

  1. $.getが呼び出され、応答を待って、応答が来た後に 2 番目のパラメーター関数を呼び出します
  2. var y = data;、しかし、データがまだ送信されていない応答設定(関数の残りの部分setPointも処理されます)
  3. サーバーからの応答と設定data(遅すぎる)

次の 2 つの回避策があります。

  • コードを 2 番目のパラメーターの関数に入れるか$.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
    
于 2013-06-11T09:00:11.897 に答える