Php $\u单击提交按钮时发布javascript日期()时间

Php $\u单击提交按钮时发布javascript日期()时间,php,javascript,html,post,Php,Javascript,Html,Post,我目前正在编写一个网页,允许用户在单板嵌入式计算机上更改本地设置。我目前正在研究的一项功能涉及将电路板上的时钟与用户计算机上的时钟同步。Javascript Date()函数允许我获取本地机器的时间,因此我使用它来获取当前时间 我的目标是创建一个submit按钮,当按下该按钮时,它将从javascript Date()函数中获取准确的时间,然后使用POST方法将该时间返回到我的php代码中。我需要发布该值的原因是,我可以运行一个Linux命令行程序,该程序具有更改电路板时间设置的权限 现在,董事

我目前正在编写一个网页,允许用户在单板嵌入式计算机上更改本地设置。我目前正在研究的一项功能涉及将电路板上的时钟与用户计算机上的时钟同步。Javascript Date()函数允许我获取本地机器的时间,因此我使用它来获取当前时间

我的目标是创建一个submit按钮,当按下该按钮时,它将从javascript Date()函数中获取准确的时间,然后使用POST方法将该时间返回到我的php代码中。我需要发布该值的原因是,我可以运行一个Linux命令行程序,该程序具有更改电路板时间设置的权限

现在,董事会获得了正确的时间并发布了正确的时间,但我遇到的问题是,返回的时间是页面加载的时间,而不是单击提交按钮的时间

这是一个问题,因为如果用户在网页上坐了5分钟,然后单击该按钮,板上的时钟将延迟5分钟提交

我尝试通过将值分配给一个隐藏的输入项来发布该值,该输入项成功地发布了该值,但发布的时间是页面加载时间。我尝试过的另一种方法是将javascript函数的onUnload调用添加到
标记中,但在尝试使用相同的方法来传递时间时,该值似乎没有被传递

以下是我目前正在使用的重要代码块:

<?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>

您应该将脚本放入函数中,并使用表单对象的onSubmit运行该函数

在表单定义中:

<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>
echo”“;
对于javascript:

<?php
echo "<form id="loctimeform" 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">
</form>

<script language='JavaScript'>

function doGetLocTime() {

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;

}

function doSubmitForm() {
  doGetLocTime();
  document.getElementById('loctimeform').submit();
}

</script>

<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>

<input class="button" type="button" name="getLocalTime" value="Copy Local Time" onclick="doSubmitForm();">

函数getTime(){
变量日期=新日期();
var d=date.getUTCDate();
风险值日=(d<10)‘0’+d:d;
var m=date.getUTCMonth()+1;
风险值月份=(m<10)‘0’+m:m;
var year=date.getUTCFullYear();
var h=date.getUTCHours();
变量小时=(h<10)‘0’+h:h;
var mi=date.getUTCMinutes();
变量分钟=(mi<10)‘0’+mi:mi;
var sc=date.getUTCSeconds();
第二个变量=(sc<10)‘0’+sc:sc;
变量loctime=月+日+小时+分钟+年+秒;
document.getElementById('localTime')。value=loctime;
}

发生这种情况是因为您正在声明变量
loctime
当呈现页面时,您需要在submit上执行该操作

基本上,您希望将javascript封装在一个函数中,并在Submit上调用它。无需对代码进行太多更改,您只需执行以下操作:


<?php
echo "<form id="loctimeform" 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">
</form>

<script language='JavaScript'>

function doGetLocTime() {

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;

}

function doSubmitForm() {
  doGetLocTime();
  document.getElementById('loctimeform').submit();
}

</script>

<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>

<input class="button" type="button" name="getLocalTime" value="Copy Local Time" onclick="doSubmitForm();">
<?php
echo "<form method='POST' onsubmit='getTime();' 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'>
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>

<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>

<input class="button" type="submit" name="getLocalTime" value="Copy Local Time">
</form>