将json数组从PHP传递到JS
我需要从php脚本向Javascript发送一个json数组。将json数组从PHP传递到JS
<?php
//controllo se sono presenti i parametri
if(isset($_GET['ID_utente']) && isset($_GET['Longitudine']) && isset($_GET['Latitudine']))
{
//Recupero il valore dei parametri
$ID_utente = $_GET['ID_utente'];
$Longitudine = $_GET['Longitudine'];
$Latitudine = $_GET['Latitudine'];
}
//eseguo la connessione al database sul server locale
//inserendo nome utente e password
$conn = mysql_connect('localhost', 'realegr', 'rabredugbo19');
//gestione degli errori
// if (!$conn) {die('Impossibile connettersi: ' . mysql_error());}
//seleziono il databse
mysql_select_db("my_realegr") or die("Impossibile selezionare il database.");
//creo una stringa sql di inserimento con i valori
//recuperati dall'url
$sql = "INSERT INTO `my_realegr`.`DatiSinistro`
(
`ID_sinistro` ,
`Tempo_Server` ,
`Tempo_Locale` ,
`ID_utente`,
`Longitudine`,
`Latitudine`
)
VALUES
(
NULL , CURRENT_TIMESTAMP , NULL , '" . $ID_utente . "', '" . $Longitudine . "', '" . $Latitudine . "')
";
$q = "SELECT Longitudine, Latitudine FROM DatiSinistro ORDER by ID_sinistro
DESC LIMIT 1";
$result = mysql_query($q, $conn);
if($row = mysql_fetch_assoc($result)) {
echo json_encode([
'status' => true,
'latitude' => $row['Latitudine'],
'longitude' => $row['Longitudine'],
]);
}
//gestione degli errori
if(! $result){die('Impossibile eseguire la query: ' . mysql_error());}
//chiudo la connessione al db
mysql_close($conn);
?>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBkEtPH07_xBVh8dWBzCQYtWimkOUnPGMQ&callback=initMap"></script>
<style>
#map {
height: 400px;
width: 100%;
}
</style>
</head>
<body>
<h3>My Google Maps Demo</h3>
<div id="map"></div>
<script>
function initMap(){
var $request = $.get('http://realegr.altervista.org/ProvaReale1.php');
$request.done(function(data) {
alert(data);
var pasedData = JSON.parse(data);
alert(pasedData.latitude);
var uluru = {lat: pasedData.latitude, lng:pasedData.longitude};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
})
}
</script>
</body>
</html>
当我打开地图,警报(数据)显示我:{ “地位”:真,“纬度”:“45.062583”,“经度”:“7.662160”}
所以PHP脚本似乎很好,除了Javascript接收JSON数组 “var pasedData = JSON.parse(data); “做我得到解析??一个数组 当我尝试以显示与警报的内容(pasedData [0]),它让我看到‘不确定’。什么事?
使用pasedData.status
,pasedData.latitude
和pasedData.longitude
修订
请使用此代码
<script>
function initMap(){
//
}
</script>
,并把您的initMap
代码这个函数中。
更新2
请地方的尝试它像数组索引使用此代码
var pasedData = JSON.parse(data);
var longi = parseFloat(pasedData.longitude);
var lati = parseFloat(pasedData.latitude);
var uluru = {lat: lati, lng:longi};
谢谢。但现在在控制台中我有一个新的错误: fc {message:“initMap is not a function”,name:“InvalidValueError”,stack:“Error f at new fc(https://maps.googleapis .com/m ... _xBVh8dWBzCQYtWimkOUnPGMQ&callback = initMap:136:68“} 任何提示? (我已更改脚本) – Nick9214
您的脚本标记中是否有函数initMap()?它是JavaScript的功能。 –
检查更新的答案 –
访问与.
运营商。 它会工作。在浏览器控制台中可以试试以下例子
var data = '{"status":true,"latitude":"45.062583","longitude":"7.662160"}';
var t = JSON.parse(data);
console.log(t.status);
使用pasedData.status,pasedData.latitude和pasedData.longitude –
嗨亲爱 你出来把不'JSON'阵列'{ “状态”:真实的, “纬”: “45.062583”, “经度” :“7.662160”}' 如果你的输出是这样的 '[{“status”:true,“latitude”:“45.062583”,“longitude”:“7.662160”}]'那么你可以像这样使用pasedData [0] –