我试图一个接一个地执行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);
}
});
};
提前感谢您的帮助。
答案 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);
}
});
};