希望我能清楚地说明我的问题。 我在我的本地主机上开发了一个应用程序,使用 HTML 文件作为界面,使用 javascript、PHP、Perl 文件来实现功能。 界面上有一个按钮,应该将用户输入提交给其他文件,然后显示结果。 当我点击那个按钮时,很长一段时间后才生成结果。我现在发现,当我点击那个按钮然后刷新页面时,结果就生成了! 看来结果悬而未决了。 此外,当我单击该按钮并在浏览器中打开另一个选项卡并打开另一个本地主机应用程序时,尽管这两个应用程序不同,但仍会生成结果。
HTML:
<input type='button' value='search' onclick="jsFunction(document.getElementsByName('x1')[0].value,document.getElementById('x2').options[document.getElementById('x2').selectedIndex].value);">
JavaScript:
function jsFunction(x1,x2)
{
var url = "file.php";
var params = "x1="+x1+"&x2="+x2;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
document.getElementById("result").innerHTML = xhttp.responseText;
}
xhttp.open("POST", url, true);
xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhttp.send(params);
}
文件.php:
$x1= (empty($_POST['x1'])) ? '' : $_POST['x1'];
$x2= (empty($_POST['x2'])) ? '' : $_POST['x2'];
echo "This echo before perl statement ";
pclose(popen("start /b perl file.pl \"$x1\" \"$x2\"", "r"));
echo "This echo after perl statement";
上面两个echo显示出来
Perl file.pl:调用cmd应用,生成结果到文件
open LOG, ">$dataPath/$jobid.log";
open OUT1, ">$dataPath/$jobid.string.txt";
open OUT2, ">$dataPath/$jobid.result.txt";
上面的perl结果是我刷新浏览器后才生成的,或者生成时间比较长。
非常感谢任何澄清或帮助。 谢谢。
最佳答案
start/b perl file.pl "$x1""$x2"
命令将立即返回 perl 进程已启动。它不会等待它完成
要同时等待 perl 进程完成,您需要使用
start /b /wait perl file.pl "$x1" "$x2"
但是,您所有的 Perl 代码似乎只是创建三个磁盘文件然后退出
关于javascript - 在刷新浏览器之前,localhost 中的应用程序的结果是挂起的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35693404/