有点像网络编码新手,我正在尝试实现一些简单的东西:
显示一个上面有一个大按钮图像的页面,当单击时,它将在我的Raspberry Pi上执行一个简单的命令行。执行完毕后,我想返回同一页,准备再次按下按钮。
所以,我使用以下方法:

<?php

if(isset($_GET['trigger']) && $_GET['trigger'] == 1)
{
    error_reporting(E_ALL);
    exec('<something>');
    usleep(1000000);
    exec('<something>');
    header("Location: push.php");
    exit;
}

?>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
    <div id="container">
        <a href='push.php?trigger=1' class="btn"></a>
    </div>

</body>
</html>

但是,在exec完成后,浏览器不会被重定向回原始页,也不会被重定向回原始页,但url是:
http://10.0.0.1/push.php?trigger=1

它们有GET参数。因此,在单击浏览器上的“后退”按钮或“刷新”按钮之前,我无法再次单击该按钮。
有什么想法。。。?

最佳答案

一个更优雅的解决方案可能是使用ajax,我看到您已经有了jquery,所以您可以在这段代码中包含一个脚本

var button = $('.btn')
$(document).on('click', '.btn', function(){
    button.css('display', 'none');
    $.get('push.php?trigger=1', function(){
        button.css('display', 'block');
    });
});

这将调用站点而不考虑响应,它将执行您的脚本,我建议使用<button></button>标记而不是<a></a>来避免重定向
如果你想进一步改进你的代码,我会把脚本和html分开,也许用POST来调用它,而不是GET

关于javascript - CSS和PHP运行exec并返回原始页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27805903/

10-09 18:01