按间隔执行AJAX请求,直到收到适当的响应

时间:2013-10-09 22:17:52

标签: ajax jquery

我正在使用jQuery执行AJAX请求,该工作正常,但服务器响应在具有URL的XML响应和没有内容的XML响应之间变化。

实际上,这两个响应都将请求限定为“成功”或“完成”,因此在处理我的AJAX请求的“完成”事件时,我想验证响应是否为空,如果是,延迟后再次尝试AJAX请求。

我正在研究jQuery的承诺,但我不确定这是否是我想要的,但如果是,请提供一个易于理解的示例。

这就是我想要的:

    function(name, location){
        $.ajax({
            type: "POST",
            url: "some.php",
            data: { name: name, location: location }
        }).done(function( msg ) {
            if (msg.length < 1) {
                setTimeout(
                   // Perform this request again
                , 500);
            } else {
                // Go on
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

只是一个猜测

//here´s a function called runAgain, waiting for two parameters, the timeout function will execute it again
function runAgain(name, location){
            $.ajax({
                type: "POST",
                url: "some.php",
                data: { name: name, location: location }
            }).done(function( msg ) {
                if (msg.length < 1) {
                    setTimeout(function(){
                       runAgain(name,location)
                    }, 500);
                } else {
                    // Go on
                }
            });
}

//This function runs when the document is ready, an calls the runAgain function 
$(function(){

   var name= "?";
   var location = "?";
    runAgain(name,location);
});