Javascript Ajax只运行一次

Javascript Ajax只运行一次,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个ajax函数,我希望它能运行1912次,但出于某种原因,它只运行一次。我正在使用startAt和stopAt来确定它应该何时停止运行,但由于某些原因它不起作用。我做错了什么 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type = "text/javascript"> function callAjax

我有一个ajax函数,我希望它能运行1912次,但出于某种原因,它只运行一次。我正在使用startAt和stopAt来确定它应该何时停止运行,但由于某些原因它不起作用。我做错了什么

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript"> 
function callAjax(gotoUrl, link, startAt, stopAt, output) {

  $.ajax({
    type: "POST",
    url: gotoUrl,
    data: { link : link },
    error: function(xhr,status,error){
      alert("error");
    },
    success:function(data) {
      document.getElementById(output).innerHTML += startAt;
    },
    complete:function(data) {
      startAt++;
      var link = data; 
      if (startAt < stopAt) {
        setTimeout(function(){ 
            callAjax(gotoUrl, link, startAt, stopAt, output) 
        }, 100);
      }
    }
  });

} //end of function callAjax()  
</script>

<body onload = 'callAjax("test1.php", "link", 1, 1912, "output")'>
<div id = "output"></div>
预期结果:


问题在于:

var link = data; 
您正在重新分配
link
的值作为返回的数据

然后,在超时时间内立即调用:

callAjax(gotoUrl, link, startAt, stopAt, output)
但是
link
不再是一个链接,而是一个对象,因此jquery会出错,并在一次迭代后自动消失

删除该行可以使代码函数正常工作,只需将数据存储在另一个变量中,它就可以工作了


您正在放置startAt++;在异步调用中,为什么不在实际执行ajax调用之前进行调用?为什么需要
setTimeout()
调用?只需调用函数…@Chris我想暂停100毫秒。@Sudakatux当我将它放入success中时,它就工作了。假设会发生什么情况?请尝试在完整事件中使用console.logging
data
,以确保该事件均匀触发…是否有方法将对象转换回字符串?这实际上取决于该对象是什么。有不同类型的对象?主要类型是什么?等等。你是说像数组之类的?
var link = data; 
callAjax(gotoUrl, link, startAt, stopAt, output)