我想用setInterval函数分享我的变量str。它需要构建传递给PHP脚本的整个URL。它可以正常使用ajax函数并且GET参数传递给php脚本,但是我在使用setInterval函数时遇到了一些麻烦。我不知道在这两个函数之间共享相同的str变量。我在下面附上我的代码:
$(function () {
$(document).ready(function () {
var ultimox;
var ultimoy;
$('#list li a').on('click',function() {
var str = $(this).data('driver');
$.ajax({
url: "live-data.php" + str,
type: 'get',
success: function(DatosRecuperados) {
$.each(DatosRecuperados, function(i,o){
//some body of function
});
setx(DatosRecuperados[(DatosRecuperados.length)-1].x);
sety(DatosRecuperados[(DatosRecuperados.length)-1].y);
$('#container').highcharts({
//this part draws chart
}});
});
});
setInterval(function () {
$.get( "live-data.php?Consultar=1" + str , function( UltimosDatos ) {
//this part draws updated chart
}
});}, 1000);
function getx(){return ultimox;}
function gety(){return ultimoy;}
function setx(x){ultimox=x;}
function sety(y){ultimoy=y;}
});
答案 0 :(得分:2)
在JavaScript中,范围是指代码的当前上下文。范围可以是全局或本地定义的。理解JavaScript范围是编写优秀JavaScript的关键。您需要了解变量/函数的可访问位置。
Javascript范围可以被认为是函数作用域。您应该使用setInterval()
功能并将其移至$(document).ready(function() { ... });
内。由于var str;
在该函数$(document).ready(function() { ... });
中声明,因此函数setInterval
现在可以读取str
。
除非您需要,否则我建议不要污染全局命名空间。我的意思是var str;
不在$(document).ready(function() { ... });
之外。将变量保存在您需要的位置。
答案 1 :(得分:1)
您可以在JQuery中拥有一个全局变量,请尝试以下示例。
<script>
var str = "";
$(document).ready(function() {
//do something with 'str'
//e.g. str = 'Some value';
});
function setInterval()
{
//do something with 'str'
//e.g. str = 'Some other value';
}
</script>