jQuery ajax“太多的递归”

时间:2011-06-13 12:38:08

标签: javascript jquery ajax loops recursion

我有一个连续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调用设置为同步..为什么?

3 个答案:

答案 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)

每次成功时,您的漫游功能都会自动调用。