2011-07-20 70 views
0

我試圖將我的mysql表中的行放入數組中,但直到現在我還沒有發現如何正確執行它。如果有人能給我一個提示,我將不勝感激。這可能是非常非常錯誤的方式,但我到目前爲止還沒有找到關於JSON和我的問題的很多信息。使用JSON將行傳遞給JavaScript

function updateMap(){ 
     var latlngArray = new Array(); 
     var titleArray = new Array(); 
     var ogvArray = new Array(); 
     var mp4Array = new Array(); 
     var webmArray = new Array(); 

     $.getJSON('getPOI.php', function(data){ 
      for(var i=0; data.length; i++){ 
       latlngArray[i] = data[i][0]; 
       alert(latlngArray[i]); 
       titleArray[i] = data[i][1]; 
       ogvArray[i] = data[i][2]; 
       mp4Array[i] = data[i][3]; 
       webmArray[i] = data[i][4]; 
      } 
     }); 
    } 

的phpfile:

 $con = mysql_connect($server,$benutzername,$passwort) or 
     die ("Keine Verbindung moeglich"); 

     mysql_select_db($datenbank, $con) or 
     die ("Die Datenbank existiert nicht"); 

     $res = mysql_query("select * from POI"); 
     echo json_encode($res); 
     mysql_close($con); 

更新:它仍然不能正常工作。報警功能只顯示 「0:[對象對象],1:[對象對象],...」 我想我沒有正確地訪問數據:

jsontest.html: 
<html> 
    <head> 
     <script src="jquery-1.6.1.js"></script> 
     <script type="text/javascript"> 
      function updateMap(){   
       $.getJSON('getPOI.php', function(data) { 
         $.each(data, function(key, value){ 
          alert(key + ': ' + value); 
         }); 
        } 
       ); 
      } 
     </script> 
    </head> 
    <body onload="updateMap()"> 
    </body> 
</html> 

getPOI.php:

<?php 
    $server = "localhost"; 
    $benutzername = "user"; 
    $passwort = "pw"; 

    $datenbank = "d0116c39"; 

    $con = mysql_connect($server,$benutzername,$passwort) or 
    die ("Keine Verbindung moeglich"); 

    mysql_select_db($datenbank, $con) or 
    die ("Die Datenbank existiert nicht"); 

    $allResults = array(); 

    $res = mysql_query("select * from POI"); 

    while ($row = mysql_fetch_assoc($res)) { 
     $allResults[] = $row; 
    } 

    echo json_encode($allResults); 
?> 

終於得到它:

<html> 
    <head> 
     <script src="jquery-1.6.1.js"></script> 
     <script type="text/javascript"> 
      function updateMap(){   
       $.getJSON('getPOI.php', function(data) { 
         $.each(data, function(i, item){ 
          alert(data[i]['Adresse']); 
          alert(data[i]['Titel']); 
         }); 
        } 
       ); 
      } 
     </script> 
    </head> 
    <body onload="updateMap()"> 
    </body> 
</html> 

回答

1

調用此:

$res = mysql_query("select * from POI"); 

將執行查詢,但不會得到您的數據:您必須將其取回

每次讀取行 -


這可以用功能,如mysql_fetch_assoc()(即在一個循環中完成,通常其中有被稱爲每行查詢選擇一次)來完成,將它添加到數組中。

而且,當您完成獲取行並構建該數組時,它將json_encode()它與迴應給客戶端的結果字符串。


你會用代碼的一部分,可能看起來有點像這樣結束:

$allResults = array(); 

// Execute the query 
$res = mysql_query("select * from POI"); 

// As long as you get rows, fetch them 
while ($row = mysql_fetch_assoc($result)) { 
    // And add them to the resulting array 
    $allResults[] = $row; 
} 

// Which, in the end, can be JSON-encoded 
echo json_encode($allResults); 
+0

好吧,我這樣做,但現在它的方式是它的一個維數組吧?所以我不知何故需要拆分這一行。有沒有簡單的方法來做到這一點? – OhSnap

+1

$ allResults是一個包含數組的數組(每行一個) –

+0

好的,儘管我現在還不能真正測試它(請參閱原文):如何解決行的變量/值?我可以按照我在主要文章中所做的方式來完成它,還是必須通過數據庫中給定的名稱來處理它們? – OhSnap