2017-08-24 184 views
2

我需要從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] –

回答

1

使用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

檢查更新的答案 –

0

訪問與.運營商。 它會工作。在瀏覽器控制檯中可以試試以下例子

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