jet*_*117 2 html javascript php post
我目前正在编写一个网页,允许用户更改单板嵌入式计算机上的本地设置.我目前正在处理的一项功能涉及将电路板上的时钟与用户计算机上的时钟同步.Javascript Date()函数允许我获取本地机器的时间,所以我用它来获取当前时间.
我的目标是创建一个提交按钮,当按下该按钮时,将从javascript Date()函数中获取确切的时间,然后使用POST方法将该时间返回到我的php代码.我需要POST值的原因是我可以运行一个Linux命令行程序,该程序有权更改板的时间设置.
现在,电路板正确地获取时间并正确地发布它,但我遇到的问题是返回的时间是页面加载的时间,而不是单击提交按钮的时间.
这是一个问题,因为如果用户坐在网页上,比方说,5分钟,然后点击该按钮,则会在5分钟后提交电路板上的时钟.
我已经尝试通过将值分配给隐藏的输入项来发布该值,该输入项成功发布它,但POSTed的时间是页面加载时间.我尝试过的另一种方法是向<body>标记添加一个javascript函数的onUnload调用,但是当尝试使用相同的方法传递时,该值似乎没有得到POST.
以下是我目前正在使用的重要代码块:
<?php
echo "<form method='POST' action='".$PHP_SELF."'>";
if (isset($_POST['getLocalTime']))
{
echo $_POST['localTime'].'<br>';
$setLocalTime = "My Commandline String";
exec($setLocalTime);
}
?>
<input type="hidden" id="localTime" name="localTime">
<script language='JavaScript'>
var date = new Date();
var d = date.getUTCDate();
var day = (d < 10) ? '0' + d : d;
var m = date.getUTCMonth() + 1;
var month = (m < 10) ? '0' + m : m;
var year = date.getUTCFullYear();
var h = date.getUTCHours();
var hour = (h < 10) ? '0' + h : h;
var mi = date.getUTCMinutes();
var minute = (mi < 10) ? '0' + mi : mi;
var sc = date.getUTCSeconds();
var second = (sc < 10) ? '0' + sc : sc;
var loctime = month + day + hour + minute + year + "." + second;
document.getElementById('localTime').value = loctime;
</script>
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
<input class="button" type="submit" name="getLocalTime" value="Copy Local Time">
</form>
Run Code Online (Sandbox Code Playgroud)
我感谢任何可以提出的建议,并提前感谢.
您应该将脚本放在一个函数中,并使用表单对象的onSubmit运行该函数.
在您的表单定义中:
echo "<form method='POST' action='".$PHP_SELF."' onsubmit='getTime();'>";
Run Code Online (Sandbox Code Playgroud)
而对于javascript:
<script language='JavaScript'>
function getTime(){
var date = new Date();
var d = date.getUTCDate();
var day = (d < 10) ? '0' + d : d;
var m = date.getUTCMonth() + 1;
var month = (m < 10) ? '0' + m : m;
var year = date.getUTCFullYear();
var h = date.getUTCHours();
var hour = (h < 10) ? '0' + h : h;
var mi = date.getUTCMinutes();
var minute = (mi < 10) ? '0' + mi : mi;
var sc = date.getUTCSeconds();
var second = (sc < 10) ? '0' + sc : sc;
var loctime = month + day + hour + minute + year + "." + second;
document.getElementById('localTime').value = loctime;
}
</script>
Run Code Online (Sandbox Code Playgroud)