Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Javascript 本机Ajax中的循环调用函数_Javascript_Ajax - Fatal编程技术网

Javascript 本机Ajax中的循环调用函数

Javascript 本机Ajax中的循环调用函数,javascript,ajax,Javascript,Ajax,以下是我的本机ajax代码: function script_grabbed(str) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

以下是我的本机ajax代码:

            function script_grabbed(str) {
                var xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("numvalue").value = xmlhttp.responseText;
                    var result = document.getElementById("numvalue").value;
                    if (typeof result !== 'undefined'){             
                        alert('Data Found:' + result);
                        //start: new request data for #valdata
                        xmlhttp.open("POST", "inc.php?q="+str, true);
                        document.getElementById("valdata").value = xmlhttp.responseText;
                        xmlhttp.send(null);
                        var dataval = document.getElementById("valdata").value;
                        if (typeof dataval !== 'undefined'){    
                            alert('Data Bound:' + dataval);
                            //continue to call maps
                            script_dkill()
                            }
                        //end: new request data for #valdata
                        }
                    }
                }
                xmlhttp.open("POST", "inc_num.php?q="+str, true);
                xmlhttp.send(null);
            }
让我从代码中解释一下:
我想从
result
dataval
中获取数据/值。获取数据后,我执行
script\u dkill()
函数

但是,它会创建循环,并且永远不会到达
script\u dkill

所以,问题是:如何进入脚本并执行它

例如:
脚本_dkill()
的内容如下:

function script_dkill(){
   alert('Hallo, you call me!');
}

任何帮助,请

对于第二个请求,您需要使用不同的XMLHttpRequest对象,因为您使用的是同一个对象,它将一次又一次地调用同一个onreadystatechange事件

function script_grabbed(str) {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById("numvalue").value = xmlhttp.responseText;
      var result = document.getElementById("numvalue").value;
      if (typeof result !== 'undefined') {
        alert('Data Found:' + result);
        //start: new request data for #valdata

        var xmlhttp2 = new XMLHttpRequest();
        xmlhttp2.onreadystatechange = function() {
          if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {
            document.getElementById("valdata").value = xmlhttp2.responseText;
            var dataval = document.getElementById("valdata").value;
            if (typeof dataval !== 'undefined') {
              alert('Data Bound:' + dataval);
              //continue to call maps
              script_dkill()
            }

          }
        }
        xmlhttp2.open("POST", "inc.php?q=" + str, true);
        xmlhttp2.send(null);

        //end: new request data for #valdata
      }
    }
  }
  xmlhttp.open("POST", "inc_num.php?q=" + str, true);
  xmlhttp.send(null);
}

谢谢它起作用了!但我得到了
未捕获的异常:firefox控制台内存不足
递归太多
。请让我知道它为什么会出现顺便问一下,
结果
可能永远不会是
未定义的
您不使用jquery有什么原因吗?如果你这样做了,你可以用链条来实现你想要的。这次我用慢动作主持。也许,我会做得更好,这样我就可以使用jquery了。是的,我读过关于
承诺的书。