【发布时间】:2011-09-13 21:38:57
【问题描述】:
我有一个运行 5 个连续步骤的过程,在我的页面中,我为每个步骤调用一个 ajax 方法。
想法是运行第一个,如果一切正常,则运行第二个,依此类推。
我的代码是:
$("#foo").click(function(){
$.ajax({
url: 'ajax.php',
async: false,
data: {
step: 1
},
dataType: 'json',
type: 'GET',
success: walk_through(data)
});
});
function walk_through(data)
{
if(data.status == 'ok')
{
if(data.next_step == 'end')
{
// All steps completed
}
else
{
// Current step completed, run next one
$.ajax({
url: 'ajax.php',
async: false,
data: {
step: data.next_step
},
dataType: 'json',
type: 'GET',
success: walk_through(data)
});
}
}
else
{
alert("Error.");
console.log(data);
}
}
我收到“递归过多”错误,即使我的 ajax 调用设置为同步。为什么?
【问题讨论】:
-
尽管出现错误,代码是否仍然有效,还是失败了?您真的希望请求是同步的吗?如果它们是异步的,它根本就不会是递归的。
-
你显然永远不会得到 next_step == 'end' 检查什么是响应
-
@Pointy:不,我不需要同步请求,但我认为问题在于
标签: javascript jquery ajax loops recursion