Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
操纵';成功';数据中断递归ajax_Ajax - Fatal编程技术网

操纵';成功';数据中断递归ajax

操纵';成功';数据中断递归ajax,ajax,Ajax,我正在写一个自动脚本来做爬网作业。我将ajax函数放在一个递归函数中,以自动化该过程。ajax函数一直从列表数组中获取URL,这一切都起到了作用。但是,在我输入以下代码后,它停止工作:$(“#myframe”).html(temp.body),其中temp是“成功”数据,temp.body是json响应的一部分。然后,代码停止在列表的第二项。请帮助我处理递归ajax的数据操作。多谢各位 var idlist = ["10001","10002","10003"]; var index = 0;

我正在写一个自动脚本来做爬网作业。我将ajax函数放在一个递归函数中,以自动化该过程。ajax函数一直从列表数组中获取URL,这一切都起到了作用。但是,在我输入以下代码后,它停止工作:
$(“#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就会开始执行。因此,我的解决方案是首先进行替换。