使用Jquery一个接一个地执行Ajax查询

时间:2017-03-24 11:02:54

标签: javascript php jquery ajax

我试图一个接一个地执行ajax post请求,并且仅在结果类似于" done"时停止。但我无法弄清楚为什么它没有循环......我得到了一个json答案,但我无法做出任何成功回应。 到目前为止我的代码:

var index = 0;
function crawler(textarea) {
        index   = 0;
        if(url != ''){
            if(/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url)){
                execute_queue(index);
            }
        }
    };

function execute_queue(index)
    {    
        url     = strip_tags($('#input-website').val().trim());
        folders = strip_tags($('#excluded-folders').val().trim());
        $.ajax( {    
            url: 'xxx',
            cache:  false,
            type : 'POST',
            async: false,
            data: {url:url, folders:folders, current:index},
            success: function(response)
            {
                index++;          
                execute_queue(index);
            }

        });
};

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你应该检查请求是否失败,这是直接来自JQuery manaual:

var jqxhr = $.ajax( "example.php" )
  .done(function() {
    alert( "success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "complete" );
  });

更多信息found here,如果网址出错,则不会调用成功。

<强>更新 我认为你的代码应该是这样的:

var index = 0;
function crawler(textarea) {
        index   = 0;
        if(url != ''){
            if(/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url)){
                execute_queue(index);
            }
        }
    };

function execute_queue(index)
    {    
        url     = strip_tags($('#input-website').val().trim());
        folders = strip_tags($('#excluded-folders').val().trim());
        $.ajax( {    
            url: 'xxx',
            cache:  false,
            type : 'POST',
            data: {url:url, folders:folders, current:index},
            success: function(response)
            {
                index++;          
                execute_queue(index);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                alert("Error: " + textStatus + " : " + errorThrown);
            }
        });
};