操纵';成功';数据中断递归ajax
我正在写一个自动脚本来做爬网作业。我将ajax函数放在一个递归函数中,以自动化该过程。ajax函数一直从列表数组中获取URL,这一切都起到了作用。但是,在我输入以下代码后,它停止工作:操纵';成功';数据中断递归ajax,ajax,Ajax,我正在写一个自动脚本来做爬网作业。我将ajax函数放在一个递归函数中,以自动化该过程。ajax函数一直从列表数组中获取URL,这一切都起到了作用。但是,在我输入以下代码后,它停止工作:$(“#myframe”).html(temp.body),其中temp是“成功”数据,temp.body是json响应的一部分。然后,代码停止在列表的第二项。请帮助我处理递归ajax的数据操作。多谢各位 var idlist = ["10001","10002","10003"]; var index = 0;
$(“#myframe”).html(temp.body)
,其中temp
是“成功”数据,temp.body
是json响应的一部分。然后,代码停止在列表的第二项。请帮助我处理递归ajax的数据操作。多谢各位
var idlist = ["10001","10002","10003"];
var index = 0;
function job(id) {
$.get("https://cors-proxy.htmldriven.com/?url=http://www.olgame.tw/sds/robot_detail.php?id="+id, function( temp ) {
$("body").append('<div id="myframe"></div>');
$("#myframe").html(temp.body); //This line causes problem. The entire code stops at here.
$("div#myframe").remove();
if (idlist[index+1] != undefined) {
index++;
job(idlist[index]);
} //index stops at '1'.
});
}
job(idlist[index]);
var idlist=[“10001”、“10002”、“10003”];
var指数=0;
功能作业(id){
$.get(”https://cors-proxy.htmldriven.com/?url=http://www.olgame.tw/sds/robot_detail.php?id=“+id,功能(温度){
$(“正文”)。附加(“”);
$(“#myframe”).html(temp.body);//这一行导致了问题。整个代码到此为止。
$(“div#myframe”).remove();
if(idlist[index+1]!=未定义){
索引++;
作业(idlist[索引]);
}//索引在“1”处停止。
});
}
作业(idlist[索引]);
完整代码如下。在开始任何“数据操作”之前,应首先删除响应中的任何脚本,以防止可能的ajax错误
var cont = temp.body.replace(/<script.*?<\/script>/g,'');
$("#myframe").html(cont);
var cont=temp.body.replace(/首先,请将您的代码减少到再现问题所需的绝对最小值。删除所有DOM操作以及与当前问题无关的任何其他操作。其次,请将所有剩余代码放到此处的问题中,而不是链接到外部站点。此处的问题应是自包含的,而不是依赖于可能随时消失的外部资源。很抱歉提交问题太快。我已清理了代码,因此问题现在很容易理解。您确定https://cors-proxy.htmldriven.com/
呼叫是否成功?您的代码只有一个“成功”回调,这意味着如果Ajax调用返回HTTP错误,则执行递归调用的回调函数将不会执行。请检查浏览器调试工具中的“网络”选项卡以确定调用是否成功。在代码中添加“错误”回调函数(对于所有Ajax调用,您通常都应该这样做。让错误不被处理不是一个好主意)。此外,您不能有多个具有相同ID的HTML元素。您的代码会一次又一次地添加div#myframe
,这不会很好地工作。使用唯一的ID,或者根本不使用ID。对于您在这里所做的事情,$(“”)HTML(temp.body).appendTo(“body”);
完全足够了。@Tomalak,我终于弄明白了。首先,感谢您告诉我检查响应的状态(它确实成功).其次,重复的ID不会成为问题,因为它将在以后被删除。最后,问题是,一旦响应放入div,响应中的javascript就会开始执行。因此,我的解决方案是首先进行替换。