我有一个连续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调用设置为同步..为什么?
答案 0 :(得分:9)
更改
success: walk_through(data)
要
success: walk_through
您希望函数walk_through
成为成功处理程序,但您不希望立即调用该函数。
答案 1 :(得分:2)
您的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.
});
答案 2 :(得分:0)
每次成功时,您的漫游功能都会自动调用。