Я написал код, который отслеживает GPS-данные пользователя: index. html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<title>Document</title>
<script type="text/javascript" src="tracking.js"></script>
</head>
<body>
<button class="btn btn-success m-5" onclick="getLocation()">start tracking</button>
<button class="btn btn-danger m-5" onclick="endTrack()">end tracking</button>
</body>
</html>
отслеживание. js:
var id;
var data = [];
var startTime;
function getLocation() {
startTime = Date.now();
if (navigator.geolocation) {
id = navigator.geolocation.watchPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
var pos = {
lat: position.coords.latitude,
long: position.coords.longitude,
time: Date.now() - startTime
}
data.push(pos);
console.log("Latitude: " + position.coords.latitude +
" Longitude: " + position.coords.longitude);
}
function endTrack() {
console.log("tracking ended");
navigator.geolocation.clearWatch(id);
}
function getData() {
return data;
}
Отслеживание работает нормально, но мне также нужно сохранить данные. Лучшим для меня было бы, если бы данные были сохранены в файле, например, в текстовом файле, но так как я использую Java Script, я думаю, что это невозможно, потому что это на стороне клиента. Я знаю, что вы можете создавать файлы и записывать файлы с помощью php, но я не знаю, как объединить php и js в моем случае, чтобы получить данные, сохраненные в data [], в файле при нажатии на конец кнопка отслеживания. Как бы я это сделал?
РЕДАКТИРОВАТЬ: я сейчас отправляю свои данные через ajax:
function getData() {
var send = JSON.stringify(data);
console.log(send)
jQuery.post('save.php', {'data': send}, function(data, status) {
alert("Data: " + data + "\nStatus: " + status);
})
}
и получаю их так:
$data = $_POST['data'];
timestamp = date('Y-m-d_H-i-s');
$datei = fopen($timestamp.".txt","x");
fwrite($datei, $data, 100);
fclose($datei);
проблема в том, что я отправляю строку, которая выглядит следующим образом: [{"lat": 80.08359300000001, "long": 8.4771352, "time": 2}, {"lat": 80.08359300000001, "long": 8.4771352, "time": 2001}] только 100 символов печатаются в текстовом файле, console.log (send) показывает все символы, а также предупреждение («Данные:» + данные + »\ nStatus:« + состояние); показывает все данные, только текстовый файл дает сокращенную версию. Я использую XAMPP. Я также попытался увеличить post_max_size и upload_max_size в php .ini, но это также не помогло. Почему не все символы отображаются? Есть ли ограничение для поста (я посмотрел вокруг в других постах, и все они сказали, что нет) или что-то не так с php или что это? Кстати, я не получаю ошибки, может быть, есть одна в коде php, но это не показывается мне, потому что это в другом файле.