2015-02-23 87 views
1

好的,这是我的问题。我有几页在地图上显示点。这些点对应于经过我的员工完成的工作上传的照片数据库中的经纬度。 我只想显示与特定工单对应的点。这是我的。 这是我的index.php文件将变量通过页面传递给脚本

<?php include 'active.php'; 
$work_order = $_REQUEST['work_order']; 
global $work_order; 
?> 

<!DOCTYPE html> 

<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>Work Order GPS Data</title> 
    <style type="text/css"> 
     body { font: normal 14px Verdana; } 
     h1 { font-size: 24px; } 
     h2 { font-size: 18px; } 
     #sidebar { float: right; width: 30%; } 
     #main { padding-right: 15px; } 
     .infoWindow { width: 220px; } 
    </style> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
    <script type="text/javascript"> 
    //<![CDATA[ 
function makeRequest(url, callback) { 
var request; 
if (window.XMLHttpRequest) { 
    request = new XMLHttpRequest(); // IE7+, Firefox, Chrome, Opera, Safari 
} else { 
    request = new ActiveXObject("Microsoft.XMLHTTP"); // IE6, IE5 
} 
request.onreadystatechange = function() { 
    if (request.readyState == 4 && request.status == 200) { 
     callback(request); 
    } 
} 
request.open("GET", url, true); 
request.send(); 
}  
    var map; 

    var center = new google.maps.LatLng(38.988297, -75.785499); 
    var geocoder = new google.maps.Geocoder(); 
var infowindow = new google.maps.InfoWindow(); 

function init() { 

var mapOptions = { 
    zoom: 9, 
    center: center, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 

map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

makeRequest('get_locations.php?work_order=$work_order', function(data) { 

    var data = JSON.parse(data.responseText); 

    for (var i = 0; i < data.length; i++) { 
     displayLocation(data[i]); 
    } 
}); 
} 

function displayLocation(location) { 

var content = '<div class="infoWindow"><strong>' + location.name +  '</strong>' 
       + '<br/>'  + location.date_time 
       + '<br/>'  + location.work_order + '</div>'; 

if (parseInt(location.lat) == 0) { 
    geocoder.geocode({ 'address': location.address }, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 

      var marker = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location, 
       title: location.name 
      }); 

      google.maps.event.addListener(marker, 'click', function() { 
       infowindow.setContent(content); 
       infowindow.open(map,marker); 
      }); 
     } 
    }); 
} else { 
    var position = new google.maps.LatLng(parseFloat(location.lat), parseFloat(location.lon)); 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: position, 
     title: location.name 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.setContent(content); 
     infowindow.open(map,marker); 
    }); 
} 
} 


    </script> 
</head> 
<center> 
<body onload="init();"> 

    <h1>Work Order GPS Data</h1> 

    <section id="sidebar"> 
     <div id="directions_panel"></div> 
    </section> 

    <section id="main"> 
     <div id="map_canvas" style="width: 95%; height: 840px;"></div> 
    </section> 

</body> 
</center> 
</html> 

然后,我有我的get_locations.php

<?php 

require 'config.php'; 
$work_order = $_REQUEST['work_order']; 

try { 

    $db = new PDO($dsn, $username, $password); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    if($work_order != ''){ 
    $sth = $db->query("SELECT * FROM exif WHERE work_order=$work_order"); 
    }else{$sth = $db->query("SELECT * FROM exif"); 
    } 
    $locations = $sth->fetchAll(); 

    echo json_encode($locations); 

} catch (Exception $e) { 
    echo $e->getMessage(); 
} 

我的问题是,当我去http://work.newmansecurity.com/gps/?work_order=1234我不仅得到点工单1234我是获得所有这些。但是,如果我直接去/gps/get_locations.php?work_order=1234它的作品。所以一些原因,变数没有得到通过,因为我希望。

请帮助

谢谢

回答

0

*****解决*****

改变了

function init() { 

var mapOptions = { 
    zoom: 9, 
    center: center, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 

map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

makeRequest(<?php echo json_encode($url); ?>, function(data) { 

    var data = JSON.parse(data.responseText); 

    for (var i = 0; i < data.length; i++) { 
     displayLocation(data[i]); 
    } 
}); 
} 

了这一点。使用json编码来传递变量。作品大

0

尝试围绕你的变量$ work_order用单引号查询。

+0

我的get_locations.php工作正常。所以我不相信这是一个问题。我的问题在于从一个页面获取变量到另一个页面。我相信它是在makeRequest('get_locations.php?work_order = $ work_order',函数(数据)部分,但我不知道。 – RKN2008 2015-02-24 14:19:18