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
将字符串转换为数字