问题描述
|
我正在尝试在网页上实现动态的当前时间,显示小时,分钟和秒。我正在使用Ajax,但这似乎不起作用。
另外,我正在使用Symfony框架。
在身体上,我得到了
<body onload=\"showCurrentTime()\">
在那之前:
<script type=\"text/javascript\" src=\"/js/curr_time.js\"></script>
curr_time.js
//Once the document is loaded,execute the showCurrentTIme function
//This is the AJAX function that displays the current time on the screen.
$(document).ready(function(){ showCurrentTime(); });
function showCurrentTime() {
//Call the current time web service,//grab the time off the server,and apply it to the
//end-user client after waiting for the document to load
$(document).ready(function() {
//Make the call to the XML web service
$.get(\"currentDateTime.PHP\",function(currentDateTime) {
//Format the time returned by the server
var time = [ $(\"hour\",currentDateTime).text(),\":\",$(\"min\",currentDateTime).text() ];
//Determine how many milliseconds to will wait until
//the time needs to be refreshed again
var refresh = [(60 - $(\"sec\",currentDateTime).text()) * 1000 ];
//display the time on the end-user client
$(\"#currentTime\").html(time.join(\'\'));
//Set a timer so that the time on the end-user client updates
// in sync with the server time to display the true current time
setTimeout(\'showCurrentTime()\',refresh);
});
});
}
在同一文件夹中,我有PHP文件currentDateTime.PHP
<?PHP
#Need to specify that this is an XML document in order for it to work with AJAX
header(\'Content-Type: text/xml\');
#Set variables equal to each part of the date and time
$year = date(\"Y\");
$mon = date(\"m\");
$mday = date(\"d\");
$hour = date(\"H\");
$min = date(\"i\");
$sec = date(\"s\");
#Create the XML document of the current date and time
echo \'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\' . \"\\n\";
echo \'<currentDateTime>\' . \"\\n\";
echo \"\\t\" . \'<year>\' . $year . \'</year>\' . \"\\n\";
echo \"\\t\" . \'<month>\' . $mon . \'</month>\' . \"\\n\";
echo \"\\t\" . \'<day>\' . $mday . \'</day>\' . \"\\n\";
echo \"\\t\" . \'<hour>\' . $hour . \'</hour>\' . \"\\n\";
echo \"\\t\" . \'<min>\' . $min . \'</min>\' . \"\\n\";
echo \"\\t\" . \'<sec>\' . $sec . \'</sec>\' . \"\\n\";
echo \'</currentDateTime>\' . \"\\n\";
?>
在体内
<p id=\"currentTime\">--:--</p>
我很久以来一直在尝试查找错误,但是没有成功...
解决方法
发布的
showCurrentTime()
函数仅做一件事:设置$(document).ready()
处理程序。您想从准备就绪的文档中调用它(您已经在这样做),而不是在函数中设置另一个处理程序。只需除去该函数内部多余的$(document).ready()
内容,如下所示:
function showCurrentTime() {
$(document).ready(function() { // DELETE THIS LINE
//Make the call to the XML web service
$.get(\"currentDateTime.php\",function(currentDateTime) {
// rest of your function goes here...
});
}); // DELETE THIS LINE
}
我确定这是主要问题。
第二个问题是,当您创建refresh
变量时,您正在将其分配为指向具有一个元素而不是数字的数组。卸下方括号。
另外,在您的JS文件中添加以下行:
$(document).ready(function(){ showCurrentTime(); });
并在HTML中加载正文:
<body onload=\"showCurrentTime()\">
是多余的。选择一个(最好是JS文件中的一个)。