在我的Javascript代码中,我有一个无限的while循环点击一个按钮,从几个文本框中收集值并将它们发送到PHP脚本。我不知道如何做到这一点,但为PHP脚本打开一个新窗口。一切都在localhost上运行。所以我的代码看起来像这样:
<body onload="generator();">
...
function generator(){
phpWindow = window.open("http://localhost/adressSaver.php", "", "width=200, height=100");
while(true){
document.getElementById("genRandom").click();
var first = document.getElementById("first").value;
var second = document.getElementById("second").value;
phpWindow.location = "http://localhost/adressSaver.php?first=" + first + "&second=" + second;
}
}
我假设使用这个,每个循环变量都会传递给PHP脚本。但不是那样,当我打开这个文档时,会创建一个新的PHP窗口,然后两个窗口都会继续加载而不做任何事情。我甚至试图取消循环并使其成为一次性操作,没有变化。 有什么想法吗?
由于
答案 0 :(得分:1)
在这种情况下,您必须使用setInterval
,以便代码无限期阻止执行:
function generator() {
phpWindow = window.open("http://localhost/adressSaver.php", "", "width=200, height=100");
window.setInterval(function () {
while(true) {
document.getElementById("genRandom").click();
var first = document.getElementById("first").value;
var second = document.getElementById("second").value;
phpWindow.location = "http://localhost/adressSaver.php?first=" + first + "&second=" + second;
}
}}, 10);
这将导致您的代码每10毫秒执行一次,您可以将其更改为您喜欢的任何内容。将其更改为0将导致代码无延迟地执行(尽管实际上有一个延迟,因为javascript不是多线程的)。
答案 1 :(得分:0)
这种情况正在发生,因为JavaScript和页面呈现只有一个线程。这意味着当你的循环处于活动状态时,不会发生任何事情:既不是任何其他JS(如鼠标点击等)也不是任何DOM节点渲染。
要修复它 - 只需添加一个&#34;休息&#34;为你的循环:
function generator(){
phpWindow = window.open("http://localhost/adressSaver.php", "", "width=200, height=100");
setInterval(function() {
document.getElementById("genRandom").click();
var first = document.getElementById("first").value;
var second = document.getElementById("second").value;
phpWindow.location = "http://localhost/adressSaver.php?first=" + first + "&second=" + second;
}, 1000);
}
这将每秒执行一次代码。