2016-07-11 53 views
2

我需要爲我的地圖添加一些地理標記。 的標記是在我mysql表上altervista.org 但我的JavaScript說的翻譯:每次我試圖...無法通過ajax從mysql查詢中讀取json元素

這裏我的PHP代碼:

require('connect.php'); 
$query = "SELECT latit, longit FROM segnalazioni"; 
$result = mysql_query($query); 
$rows = array(); 
while ($row = mysql_fetch_assoc($result)){ 
    $rows[] = $row; 
} 
echo json_encode($rows); 

返回:

[{"latit":"12.34","longit":"12.34"},{"latit":"56.78","longit":"56.78"},...] 

這裏我的JavaScript:

function addMarker(mapobj) { 
    $.getJSON("http://####.altervista.org/map.php", function(data) { 
     var items = []; 
     $.each(data, function(key1 , val1) { 
      items.push("<li id='" + key1 + "'>" + val1 + "</li>"); 
       //next todo: 
       //mapobj.marker([latit, longit]).addTo(map).bindPopup("hi"); 
      }); 
     $("<ul/>", { 
      "class": "my-new-list", 
      html: items.join("") 
     }).appendTo("body"); 
    }); 
} 

和我[正文]結束時,我只能看到:

[object Object] 
[object Object] 
[object Object] 
... 
+2

***請[停止使用'mysql_ *'功能(http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in- PHP)。*** [這些擴展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中刪除。瞭解[準備](http:// en.wikipedia.org/wiki/Prepared_statement)[PDO]的聲明(http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual /en/mysqli.quickstart.prepared-statements.php)並考慮使用PDO,[這真的很簡單](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+2

你有一個對象數組。你的'data'在數組上循環,這意味着'key1'只是'0','1'等等,而'val1'是一個包含你的緯度/經度值的對象,而不是數值本身 –

+0

我是對於已棄用的功能抱歉...不幸的是,這是一個學術用途的項目... –

回答

1

之前根據jquery.each的參數是

  • indexInArray,值,而不是關鍵,價值

因此,代碼爲:

$(function() { 
 
    var data = [{"latit": "12.34", "longit": "12.34"}, {"latit": "56.78", "longit": "56.78"}]; 
 
    var items = []; 
 
    $.each(data, function(indexInArray , value) { 
 
    items.push("<li id='" + indexInArray + "'>latit: " + value.latit + ' longit:' + value.longit + ' OR '+ JSON.stringify(value) + "</li>"); 
 
    //next todo: 
 
    //mapobj.marker([latit, longit]).addTo(map).bindPopup("hi"); 
 
    }); 
 
    $("<ul/>", { 
 
    "class": "my-new-list", 
 
    html: items.join("") 
 
    }).appendTo("body"); 
 
});
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>

1

使用此

$.each(result, function(key, value){ 
     $.each(value, function(key, value){ 
      console.log(key, value); 
     }); 
    }); 
+0

好的,它的工作原理...但是...爲什麼? 我試圖改變'select latit from ...' 的查詢,所以結果在json中一次只有一個...但是不管用! –

+0

您需要獲取關鍵值。 –

1

我還要鼓勵發送JSON流之前使用頭。告訴HTTP響應中發送的內容類型總是很好的。使用

header('Content-Type: application/json'); 

使用

echo json_encode($rows);