成功后启动下一个功能

时间:2013-03-30 20:56:09

标签: javascript ajax function callback

我希望在成功调用ajax后启动一个函数。我现在做的是这个

function ajaxCall(url, types, next) {
    $.ajax({
        url: url,
        type: 'POST',
        beforeSend: function () {

            $("#plaatsMelding").append("<div id=\"" + types + "verwerkt\"><div class=\"progress-label\">" + types + " verwerken...</div></div>");
        },
        success: function (data) {
            $('#plaatsMelding').empty();
            $("#plaatsMelding").append("<div id=\"" + types + "verwerkt\"><div class=\"progress-label\">" + data + "</div></div>");
            //run next script
            if (next.length) {
                alert(next);
                next(); //this won't work because it will search for the next() function
            }

        }
    });
}

我使用此功能启动此功能:

function saveRace() {
    ajaxCall("verwerkRace.php", "race", "savePlayers");
}

所以当该功能准备就绪时,我希望它运行“savePlayers”功能。我怎么能这样做?

function savePlayers() {
    ajaxCall("verwerkPlayers.php", "players");
}

3 个答案:

答案 0 :(得分:3)

不传递字符串,传递函数:

function saveRace() {
    ajaxCall("verwerkRace.php", "race", savePlayers);
}

然后在success中,您可以执行此操作:

if (next) {
    next(); 
}

答案 1 :(得分:2)

只需传递函数本身:

function saveRace() {
  ajaxCall("verwerkRace.php", "race", savePlayers);
}

JavaScript不知道将字符串转换为要调用的函数。

答案 2 :(得分:0)

根据建议,传递函数而不是字符串

function saveRace() {
    ajaxCall("verwerkRace.php", "race", savePlayers);
}

成功之后,您可以检查以确保您正在传递函数,然后将其激活:

 if (next && typeof(next) === 'function') {
    next(); 
 } else {
    console.error('Error firing the callback!');
 }