【问题标题】:ajax request xml from php来自php的ajax请求xml
【发布时间】:2014-05-18 18:18:56
【问题描述】:

我有一个谷歌地图,它在 PHP 中根据日期变量加载标记。默认日期是当前日期。现在我希望通过表格更改日期。在地图所在的页面上,我有一个表单,用户可以在其中选择一个日期,我希望地图根据所选日期重新加载标记。我有一个 onChange 事件调用 mytest();函数,它将重新加载地图。我无法让它工作,当日期更改时,什么也没有发生。这是我的代码。

JavaScript

    function mytest() {


var map = ''

function MyMap(){


    var im = 'http://www.robotwoods.com/dev/misc/bluecircle.png';
    var CustomMarker = 'http://findmyyard.com/images/MarkerIcon.png';


    if(navigator.geolocation){

        navigator.geolocation.getCurrentPosition(locate);
    } else { 

   alert('Please enable "Location Sharing"')

    }

    function locate(position){

        var myLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        var mapOptions = {
          zoom: 12,
          center: myLatLng,
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          zoomControl: true,
          streetViewControl: false,
        }
        var map = new google.maps.Map(document.getElementById('map-canvas'),
                                      mapOptions);
        var userMarker = new google.maps.Marker({
            position: myLatLng,
            map: map,
            icon: im
        });
    var infoWindow = new google.maps.InfoWindow;

    var date = document.getElementById('finddate').value;
      // Change this depending on the name of your PHP file

        downloadUrl("phps/xmltest.php"+ date, function(data) {
        var xml = data.responseXML;         
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("name");
          var address = markers[i].getAttribute("address");
          var dt1 = markers[i].getAttribute("date1");
          var dt2 = markers[i].getAttribute("date2");
          var dt3 = markers[i].getAttribute("date3");
          var tm1 = markers[i].getAttribute("time1");
          var tm2 = markers[i].getAttribute("time2");
          var tm3 = markers[i].getAttribute("time3");
          var html = "<b>" + name + "</b> <br/>" + "Date of Yard Sale: " + dt1 + '&nbsp;' + tm1 + '&nbsp;' + dt2 + '&nbsp;' + tm2 + '&nbsp;' + dt3 + '&nbsp;' + tm3 + '&nbsp;' + "<br/>" + address;
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: CustomMarker
          });

          bindInfoWindow(marker, map, infoWindow, html);
        }


       });


    function bindInfoWindow(marker, map, infoWindow, html) {
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker, html);
      });
    }

    function downloadUrl(url, callback) {
      var request = window.ActiveXObject ?
          new ActiveXObject('Microsoft.XMLHTTP') :
          new XMLHttpRequest;

      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          request.onreadystatechange = doNothing;
          callback(request, request.status);
        }
      };

         request.open('GET',url, true);
      request.send(null);
    }
         function doNothing() {}
    }

}}

PHP - xmltest.php

<?php



       $date = $_GET['date'];

         if($date == "''" || $date == "Today") { $date = date('m-d-Y');} else {$date = $_GET['date'];}




$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);

// Opens a connection to a MySQL server

mysql_connect("localhost", "someuser", "somepw");

// Set the active MySQL database

$db_selected = mysql_select_db("Registration2");
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
}

// Select all the rows in the markers table



$query = "SELECT * FROM REGISTERED2 WHERE DateONE = '$date' or DateTWO = '$date' or DateTHREE = '$date'";
$result = mysql_query($query);
if (!$result) {
  die('Invalid query: ' . mysql_error());
}

header("Content-type: text/xml");

// Iterate through the rows, adding XML nodes for each

while ($row = @mysql_fetch_assoc($result)){
  // ADD TO XML DOCUMENT NODE
  $node = $dom->createElement("marker");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("name",$row['Name']);
  $newnode->setAttribute("address", $row['Address']);
  $newnode->setAttribute("lat", $row['Latitude']);
  $newnode->setAttribute("lng", $row['Longitude']);
  $newnode->setAttribute("date1", $row['DateONE']);
  $newnode->setAttribute("date2", $row['DateTWO']);
  $newnode->setAttribute("date3", $row['DateTHREE']);
  $newnode->setAttribute("time1", $row['TimeONE']);
  $newnode->setAttribute("time2", $row['TimeTWO']);
  $newnode->setAttribute("time3", $row['TimeTHREE']);

}

echo $dom->saveXML();

?>

请帮助我,让我知道我做错了什么。

【问题讨论】:

  • Java 不是 JavaScript
  • 应该是Javascript
  • 这与your previous version有何不同?
  • 一点也不,我不知道你是否可以帮助我,所以我重新发布了一个更清晰的问题和代码。如果你能帮助我,我很想听听你有什么贡献。谢谢。
  • 有人能帮我解决这种情况吗?请尽可能这样做。谢谢。

标签: javascript php xml google-maps


【解决方案1】:

我需要做的就是将 var "Date" 的名称更改为其他名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 2013-04-16
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2016-06-28
    • 2013-01-28
    相关资源
    最近更新 更多