Javascript jqueryajax";“递归太多”;
我有一个连续运行5个步骤的过程,在我的页面中,我为每个步骤调用了一个ajax方法 想法是运行第一个,如果一切正常,则运行第二个,依此类推 我的代码是:Javascript jqueryajax";“递归太多”;,javascript,jquery,ajax,loops,recursion,Javascript,Jquery,Ajax,Loops,Recursion,我有一个连续运行5个步骤的过程,在我的页面中,我为每个步骤调用了一个ajax方法 想法是运行第一个,如果一切正常,则运行第二个,依此类推 我的代码是: $("#foo").click(function(){ $.ajax({ url: 'ajax.php', async: false, data: { step: 1 }, dataType: 'json', type:
$("#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调用被设置为同步。。为什么?您的JavaScript在AJAX调用中出错:
$.ajax({
url: 'ajax.php',
async: false,
data: {
step: data.next_step
},
dataType: 'json',
type: 'GET',
success: walk_through //You had walk_through(data), which makes a function call, rather than a reference to a function.
});
您的遍历函数每次成功时都在调用自身。更改
成功:遍历(数据)
到
success:遍历
您希望函数
walk\u through
成为成功处理程序,但不希望立即调用该函数。尽管出现错误,代码是否仍能正常工作,还是失败了?您真的希望请求是同步的吗?如果它们是异步的,那么它就不会是递归的。显然,你永远不会得到下一步=='end'检查结果是什么response@Pointy:不,我不需要同步请求,但我认为问题在于,即使请求不同步,它也会自动调用。+1好点。这才是真正的问题。它将调用该方法来获取要放入success属性的值,因此它永远不会执行任何ajax调用。通过传递遍历(数据)
您正在执行函数并将结果作为onSuccess方法传递。您需要传递方法本身。这就是问题所在!谢谢