Javascript (JS_控制台)为什么单击按钮时此循环会中断?
我想在控制台中执行这段代码,我想做的是更改几个字段的值并继续提交Javascript (JS_控制台)为什么单击按钮时此循环会中断?,javascript,jquery,Javascript,Jquery,我想在控制台中执行这段代码,我想做的是更改几个字段的值并继续提交 var animal = new Array(); //Declare Array animal[0] = 'cat'; animal[1] = 'dog'; animal[2] = 'cow'; animal[3] = 'snake'; animal[4] = 'goat'; animal[5] = 'tiger'; animal[6] = 'lion'; animal[7] = 'horse'; var createF
var animal = new Array(); //Declare Array
animal[0] = 'cat';
animal[1] = 'dog';
animal[2] = 'cow';
animal[3] = 'snake';
animal[4] = 'goat';
animal[5] = 'tiger';
animal[6] = 'lion';
animal[7] = 'horse';
var createFunc = function(i){
return function(){
var token_field = document.getElementById('animal_name');
token_field.value = animal[i]; //Change the value of the field with each array value
var path_field = document.getElementById('To_do');
path_field.value='feed'; // Change the other field with 'feed'
var submit_all = document.getElementById('graph_submit');
submit_all.click(); //submit the form
};
};
for (var i = 0; token.length > i; i++) {
setTimeout(createFunc(i), 2000);
}
但是当按钮被点击时,页面被重新加载,循环被破坏。。。因此,只有第一个值被提交,其他值保留
在第一次提交(将在2秒钟以上完成)后,停止执行提交页面的代码。由于POST查询,页面将被重新加载。但是我希望所有的值都被提交,但是页面被重新加载
对此我能做些什么?单击“graph\u submit”可能会改变范围,循环中断
您可以在这里使用“防止默认”功能。我不知道您的确切代码。但对于第一次看,我可以猜到您创建了页面提交队列 在第一次提交(将在2秒钟以上完成)后,停止执行提交页面的代码。由于POST查询,页面将被重新加载 编辑:
var=newarray();
动物[0]=“猫”;
动物[1]=“狗”;
动物[2]=“奶牛”;
动物[3]=“蛇”;
动物[4]=“山羊”;
动物[5]=“老虎”;
动物[6]=“狮子”;
动物[7]=“马”;
$(文档).ready(函数(){
$('#q').attr('value',JSON.stringify(animals));
$('#ajax')。单击(函数(){
$.post(“/”,JSON.stringify(动物));
});
});
“使用ajax”发布数据,您可以在firebug中进行检查。也一样
[“猫”、“狗”、“牛”、“蛇”、“山羊”、“老虎”、“狮子”、“马”]
我认为您需要阅读一些HTML表单、ajax请求和HTTP方法的基础知识。好的。这里需要更多的澄清。为什么要使用setTimeout?因为在每个循环中,你只发送i。一个是您的循环,另一个是setTimeOut,它正在创建冲突 下面是一些建议:
setTimeout(
函数(){
var i=0;
createFunc(i);
i++;
} , 2000);
请不要两者都用。也许这会很有帮助并且很清楚。在createFunc中输入一些console.log并检查。它是否在每2秒后被调用。不相关:不要使用基本构造函数。它们是错误的,返回的值不正确。@Manish,是的,正在调用它。。。。但正如Maxim所说,它会在循环中断时重新加载。但我想结束这个循环,完成我的工作,该做什么?是的,这就是正在发生的事情。。。我想它会重新加载。我能做些什么吗?我需要一个接一个地发布所有数组值,但如果这种情况持续发生,则只会发布第一个值,而其他值会保留。我能做些什么呢?我想你不需要在请求之间有任何延迟。只需在一次发布中将所有项目传递到服务器。您可以使用jQuery使其变得简单:谢谢。。。不,我确实理解这个问题,但是当我使用$.POST()时;在控制台中,它给出了一个错误'TypeError:$.GET不是一个函数',关于这个家伙有什么解决方案吗?我将用如何使用post和jquery将数组传递给服务器的示例来编写答案。这显然很容易。不,它不会被改变。它保持不变。实际上,在第一次提交(将在2秒以上完成)后,已提交页面的代码执行停止。由于POST查询,页面将被重新加载。但是我希望所有的值都被提交,但是页面被重新加载。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/jquery-2.1.0.min.js"></script>
</head>
<body>
<script>
var animals = new Array();
animals[0] = 'cat';
animals[1] = 'dog';
animals[2] = 'cow';
animals[3] = 'snake';
animals[4] = 'goat';
animals[5] = 'tiger';
animals[6] = 'lion';
animals[7] = 'horse';
$(document).ready(function () {
$('#q').attr('value', JSON.stringify(animals));
$('#ajax').click(function () {
$.post("/", JSON.stringify(animals));
});
});
</script>
<form id="main" action="http://www.google.com/search">
<input id="q" name="q" type="hidden" value="" />
<input id="submit" type="submit" value="Using submit" />
<input id="ajax" type="button" value="Using ajax" />
</form>
</body>
</html>