【发布时间】:2017-05-03 09:10:12
【问题描述】:
我尝试每 3 秒从服务器更新一次值,但使用以下代码时出现了非常奇怪的行为:
PHP函数
function getLocation($key, $car_id) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://owner-api.teslamotors.com/api/1/vehicles/$car_id/data_request/drive_state");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer $key"
));
$dat = curl_exec($ch);
curl_close($ch);
$result = json_decode($dat, true);
$lat = $result['response']['latitude'];
$long = $result['response']['longitude'];
return array($long, $lat);
}
Javascript 调用:
<script>
function refreshLocation() {
try {
<?php
$loc = getLocation('someToken', 'someID');
?>
pos = [<?php echo '"'.implode('","',$loc ).'"' ?>];
pos[0] = parseFloat(pos[0].replace(",", "."));
pos[1] = parseFloat(pos[1].replace(",", "."));
console.log("Loc:" + pos[1] + " : " + (pos[0]));
}
catch(err) {
}
setTimeout(refreshLocation, 3000);
}
</script>
问题是,无论服务器上的值如何变化,getLocation 函数总是返回与第一次执行时相同的值。只有刷新整个页面才能提供新值。 我看不到问题所在,也找不到令人满意的解决方案。我没有意识到 PHP 和 javascript 有问题吗?
【问题讨论】:
-
您的代码不起作用。 PHP 在加载页面时只执行一次。使用api.jquery.com/jquery.ajax&调用api多次刷新
-
那是因为在最初提供页面时会输出一次位置。如果您希望它是动态的,则需要每 3 秒异步调用一个单独的 PHP 脚本来检索新位置。
标签: javascript php curl