我有很多关于如何将数据添加到json文件的帖子,我尝试将它们放在一起并用于我的情况,但它不起作用。基本上我所做的是使用javascript从html文件获取数据,然后使用XMLHttp请求将该数据发送到php文件,并从php文件我尝试将数据添加到.json文件。 Anywho,它没有添加它,我不知道为什么以及问题在哪里。 我的问题是关于XMLHttp请求。这是对的吗?为什么不? 关于php文件。如果问题出在XMLHttp请求中,那么php文件会将数据添加到.json文件中吗?我只是想在json文件中获取任何内容,因此我可以开始考虑使其可行的算法。 XMLHttp请求对我来说很新鲜。为了理解,这是我的代码:
的index.html:
<!DOCTYPE html>
<html>
<head>
<title>Project</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/style_mob.css" type="text/css" rel="stylesheet">
<script src="script/jquery.js"></script>
<script src="script/sendData.js"></script>
</head>
<body>
<div id="top">
<h1>Click only in case of an emergency!</h1>
</div>
<div id="divButtons">
<button class="button" id="polizei">Polizei</button>
<button class="button" id="feuerwehr">Feuerwehr</button>
<button class="button" id="krankenwagen">Krankenwagen</button>
</div>
</body>
</html>
sendData.js:
$( document ).ready(function() {
var type;
var latitude;
var longitude;
var currentdate = new Date();
$(".button").click(function(){
type = $(this).attr("id");
var dateTime = "Date: " + currentdate.getDay() + "/"+(currentdate.getMonth()+1)
+ "/" + currentdate.getFullYear() + " time - "
+ currentdate.getHours() + ":"
+ currentdate.getMinutes();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(sendData);
} else {
alert("Geolocation is not supported by this browser.");
}
function sendData(position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
}
var hr = new XMLHttpRequest();
hr.open("POST", "emergencyData.php", true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
alert("about to send data to php file");
hr.send("type="+type+"&latitude="+latitude+"&longitude="+longitude+"$dateTime="+currentdate+"");
});
});
emergencyData.php:
<?php
header("Content-Type: application/json");
$type = $_POST["type"];
$latit = $_POST["latitude"];
$longit = $_POST["longitude"];
$dateTime = $_POST["dateTime"];
echo $type;
// Loading existing data:
$json = file_get_contents("emergencyData.json");
$data = json_decode($json, true);
// Adding new data:
$data[0] = array('type' => $type, 'latitude' => $latit, 'longitude' => $longit, 'date' => $dateTime);
// Writing modified data:
file_put_contents('emergencyData.json', json_encode($data, JSON_FORCE_OBJECT));
?>
答案 0 :(得分:0)
你在javascript中输错了。
delete
hr.send("type="+type+"&latitude="+latitude+"&longitude="+longitude+"$dateTime="+currentdate+"");
$
的{{1}}应为dateTime
此外,我认为您希望&
成为&dateTime="+currentdate+""
。额外&dateTime="+dateTime
是不必要的。
最后,如果您想继续添加新数据而不是覆盖旧数据,请在PHP脚本中使用:
+""
否则每次旧的JSON数据都会被新的数据替换。