2015-07-10 92 views
0

我有我的代码问题,我不知道问题是什么。我正试图在地图上用巴士车队的坐标移动标记。我的方法是使用PHP和Oracle数据库生成JSON,然后在JavaScript中使用数据打印标记的移动...但我认为信息没有通过网络映射。解析数据PHP JSON到Ajax - 我错过了什么吗?

请帮忙。

的PHP(marks.php):

query oracle.... 

while (($row = oci_fetch_array($result, OCI_BOTH)) != false) { 
    header('Content-Type: application/json'); 
    $data = array($row); 
    echo json_encode($data); 
} 

结果:

{"0":"10\/07\/15","MAX(OP.TELEGRAMDATE)":"10\/07\/15","1":"12115","BUSNUMBER":"12115","2":"511031","STOPID":"511031","3":"-765320567","GPSX":"-765320567","4":"33334550","GPSY":"33334550","5":"A11","SHORTNAME":"A11"} 

中的JavaScript:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <title>Real time</title> 
<style> 
     html, body, #map { 
     height: 100%; 
     margin: 0px; 
     padding: 0px 
     } 
    </style> 
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=true&amp;libraries=places&amp;language=es"> 
</script> 
<script src="http://190.216.202.35/prueba/js/mapmark.js"></script> 
</head> 
    <body > 
    <div id="map"></div> 
    </body> 




<script> 
    var map; 

     map = new google.maps.Map(document.getElementById("map"), { 
      center : new google.maps.LatLng(3.4404103,-76.5077627), 
      zoom : 13, 
      mapTypeId : 'roadmap' 
     }); 


    $.ajax({     
      type: "POST", 
      dataType: "json", 
      url: "marks.php",     
      cache: false, 
      success: function(data){ 
      alert(data[0]); //expected to return value1, but it returns undefined instead. 
      }     
     }); 

     </script> 


</html> 

我想至少警报数据,但没有发生了。请帮我看看我的问题是什么。

+0

请用'console.log(data);'替换'alert(data [0]);'并显示输出。 –

+0

尝试使用** console.log **而不是** alert **,请参阅此处已确认的答案:[为什么console.log()被认为比alert()更好(http://stackoverflow.com/questions/8203473 /为什么 - 是控制台-LOG-认为,好于警报?)。 –

+0

这些变化现在显示@ ZakariaAcharki –

回答

2

您正在循环提取并在每次迭代中输出JSON。这是无效的。你本质上是这样产生的:

{...}{...}{...}etc... 

这是非法的JSON。你需要建立在循环中的数组,然后对其进行编码循环结束后:

$data = array(); 
while($row = fetch...) { 
    $data[] = $row; 
} 
echo json_encode($data); 

由于您的JSON是非法的,JavaScript并不是解码它在所有(当然,开始对其进行解码,然后一旦中止它碰到语法错误)。

+0

tnks @Marc B现在我需要把这些标记,但现在tnks显示somthing –