我想做的是使用 ajax 从另一个 php 文件中获取时间。
所以javascript代码看起来像这样:
var timeNow = setInterval(
$.ajax({
url: "process/time.php",
success: function(msg) {
$('#time').text(msg);
}
}), 1000);
这是它发布的 php 代码。
<?php echo gmdate('h:i:s A', time() + 8 * 3600);?>
有什么想法吗?
可以使用
函数对象以及要执行的代码字符串来调用setInterval
。 $.ajax
返回一个 jqXHR
对象,该对象被强制转换为字符串 "[object Object]"
。然后,此字符串作为代码执行,并引发错误。
您希望将$.ajax
调用包装在一个函数中:
var timeNow = setInterval(function() {
$.ajax({
url:"process/time.php",
success: function(msg) {$('#time').text(msg);}
});
}, 1000);
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){
header('Content-Type: application/json');
echo json_encode(array('server_time'=>gmdate('h:i:s A', time() + 8 * 3600)));
die;
}
?>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script>
function polltime(){
setTimeout(function(){
$.ajax({ url: "./get_time.php", cache: false,
success: function(data){
$("#time").replaceWith("<p id='"time'">"+data.server_time+"</p>");
polltime();
}, dataType: "json"});
}, 1000);
}
$(document).ready(function(){
polltime();
});
</script>
<p id="time"><?php echo gmdate('h:i:s A', time() + 8 * 3600);?></p>
var timeNow = setInterval(
function() { // you missed function within setInterval()
$.ajax({
url: "process/time.php",
success: function(msg) {
$('#time').text(msg);
}
}, 1000);
一个更简单的解决方案如下:
var timeNow = setInterval(
function() {
$("#time").load("process/time.php");
}, 1000);
参见jQuery load()
方法;它是为这种事情而设计的。
var timeNow = setInterval(
$.ajax({
url: "process/time.php",
success: function(msg) {
$('#time').html(msg); //you have to use html instead
}
}), 1000);
创建一个函数并将您的代码放在该函数上,然后在<body onload"function_name();">
上调用它