【发布时间】:2013-08-01 11:25:29
【问题描述】:
我可能在这里做一些非常愚蠢的事情。基本上,一个用户可以有多个“站点”,对于每个站点,我们必须进行一些计算才能得出一个总数。我们有一个 php 页面来进行这些计算,我们可以称之为calculate.php。它返回一个字符串 ex:50,然后我们将其解析为 JS 中的浮点数。所以这就是我想要做的:获取calculate.php输出的所有数字的总和。
我的想法是遍历站点,$.post() 在每次迭代中计算.php(其他事情也在循环中完成,不太重要)并添加到回调函数中的变量。我相信我的问题是 $.post() 是异步的......这是我的示例代码:
function systems(siteList){
var runningTotal = 0;
for (var ii=0,i<siteList.length,i++){
$.post("calculate.php",{foo:siteList[ii]},function(data){
// important part
runningTotal = runningTotal + data
})
}
//outside loop
alert(runningTotal)
}
这个功能可能不完善,但我真正的问题是如何才能达到我在这里寻找的结果?如您所知,以上代码的 runningTotal 总是以 0 提示。
谢谢
编辑:感谢大家的帮助。据我所知,使用这么多的 AJAX 调用是不明智的,所以我不直接解决这个问题,我相信我会退后一步,接受只发送一个 ajax 回调来执行任务的建议为我总结。再次感谢
【问题讨论】:
-
“我相信我的问题是 $.post() 不是异步的” 不,问题是它是异步的。
-
对不起,我是这个意思
-
@collapsar:第二个参数是你想通过请求传递的数据。
-
@FelixKling:仔细阅读会赢得胜利。抱歉,我跳过了文档中的重要部分,谢谢提示
-
我不确定这个问题是否应该作为重复问题关闭,但这是一个非常相似的问题(顺便说一句,我提供了相同的答案):stackoverflow.com/questions/8726046/…。
标签: javascript jquery post