Javascript 本机Ajax中的循环调用函数
以下是我的本机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) {
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了。是的,我读过关于承诺的书。