Javascript 全局变量未正确设置$.getJSON中的值
我已经在head部分内的index.html页面上声明了名为counter=0的全局变量Javascript 全局变量未正确设置$.getJSON中的值,javascript,jquery,Javascript,Jquery,我已经在head部分内的index.html页面上声明了名为counter=0的全局变量 <script> var counter=0; </script> 只是因为您的alert()处理速度比计数器++快 您的.getJSON()只是一个异步的AJAX调用 这意味着JavaScript代码不会等到AJAX调用完成,它会继续执行而不等待。原因很简单,因为您的警报()处理速度比计数器++快 function getCounter(param) { $.get
<script>
var counter=0;
</script>
只是因为您的
alert()
处理速度比计数器++快代码>
您的.getJSON()
只是一个异步的AJAX调用
这意味着JavaScript代码不会等到AJAX调用完成,它会继续执行而不等待。原因很简单,因为您的警报()
处理速度比计数器++快代码>
function getCounter(param)
{
$.getJSON("somewebserviceURL&format=json&callback=?",
function(data)
{
$.each(data, function(i, item)
{
counter++;
});
// try this
alert(counter);
}
);
}
您的.getJSON()
只是一个异步的AJAX调用
这意味着JavaScript代码不会等到AJAX调用完成,它会继续执行而不等待。这是因为getJSON是异步发送的。在getJSON成功回调之前调用您的警报。只有得到响应后才会调用成功回调,此时已触发alert()。这是因为getJSON是异步发送的。在getJSON成功回调之前调用您的警报。只有得到响应后才会调用成功回调,此时已触发alert()。这是因为getJSON
是异步的。这意味着在点击警报(计数器)
之前,计数器
变量不会增加。相反,将警报移动到$之后。each()
循环:
function getCounter(param)
{
$.getJSON("somewebserviceURL&format=json&callback=?",
function(data)
{
$.each(data, function(i, item)
{
counter++;
});
// try this
alert(counter);
}
);
}
function getCounter(param) {
$.getJSON(
"somewebserviceURL&format=json&callback=?",
function(data) {
$.each(data, function(i, item) {
counter++;
});
alert(counter);
}
);
}
这是因为getJSON
是异步的。这意味着在点击警报(计数器)
之前,计数器
变量不会增加。相反,将警报移动到$之后。each()
循环:
function getCounter(param) {
$.getJSON(
"somewebserviceURL&format=json&callback=?",
function(data) {
$.each(data, function(i, item) {
counter++;
});
alert(counter);
}
);
}
您可能会为此使用回调:
function getCounter(param, callback) {
$.getJSON("somewebserviceURL&format=json&callback=?",
function(data)
{
$.each(data, function(i, item)
{
counter++;
});
callback.call(this, counter);
}
);
}
getCounter(param, function(counter) { alert(counter); } );
您可能会为此使用回调:
function getCounter(param, callback) {
$.getJSON("somewebserviceURL&format=json&callback=?",
function(data)
{
$.each(data, function(i, item)
{
counter++;
});
callback.call(this, counter);
}
);
}
getCounter(param, function(counter) { alert(counter); } );
所有这些都是真的,GetJson是异步的
只需将alert()移动到每个循环的内部,即可查看受影响的值,如下所示
function getCounter(param)
{
$.getJSON("somewebserviceURL&format=json&callback=?",
function(data)
{
$.each(data, function(i, item)
{
counter++;
alert(counter);
});
});
}
所有这些都是真的,GetJson是异步的
只需将alert()移动到每个循环的内部,即可查看受影响的值,如下所示
function getCounter(param)
{
$.getJSON("somewebserviceURL&format=json&callback=?",
function(data)
{
$.each(data, function(i, item)
{
counter++;
alert(counter);
});
});
}
你能告诉我在$getJSON()调用之外获取计数值的方法吗?或者如果我使用jquery中的$.POST()方法,它能解决问题吗?你只能在AJAX方法的回调函数内部使用计数值,不管你是直接这样做的,就像你的例子一样,或者在别处调用函数并将变量传递给它。基本上,我需要$.getJSON()应该执行它的成功函数&代码应该按照行号从上到下运行,而不跳过任何行。您能告诉我如何在$.getJSON()调用之外获得计数值,或者如果我使用$.POST()吗jquery中的方法是否解决了问题?您只能在AJAX方法的回调函数中使用计数值,无论您是直接这样做(如示例中所示),还是在其他地方调用函数并将变量传递给它。基本上,我需要$.getJSON()应执行其成功功能&代码应根据行号从上到下运行,而不跳过任何行可能重复的