将json数组从PHP传递到JS

将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>

php脚本的输出:enter image description here

当我打开地图,警报(数据)显示我:{ “地位”:真,“纬度”:“45.062583”,“经度”:“7.662160”}

所以PHP脚本似乎很好,除了Javascript接收JSON数组 “var pasedData = JSON.parse(data); “做我得到解析??一个数组 当我尝试以显示与警报的内容(pasedData [0]),它让我看到‘不确定’。什么事?

+0

使用pasedData.status,pasedData.latitude和pasedData.longitude –

+0

嗨亲爱 你出来把不'JSON'阵列'{ “状态”:真实的, “纬”: “45.062583”, “经度” :“7.662160”}' 如果你的输出是这样的 '[{“status”:true,“latitude”:“45.062583”,“longitude”:“7.662160”}]'那么你可以像这样使用pasedData [0] –

使用pasedData.statuspasedData.latitudepasedData.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}; 
+0

谢谢。但现在在控制台中我有一个新的错误: 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

+0

您的脚本标记中是否有函数initMap()?它是JavaScript的功能。 –

+0

检查更新的答案 –

访问与.运营商。 它会工作。在浏览器控制台中可以试试以下例子

var data = '{"status":true,"latitude":"45.062583","longitude":"7.662160"}'; 
var t = JSON.parse(data); 
console.log(t.status);