Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z GoogleMaps w Ajax-ie
Forum PHP.pl > Forum > XML, AJAX
kaznodzieja
Witam!

Chce zrobić by poprzez naciśnicie linku na stronie, wyswietliła mi się mapka generowana przez google maps.
Kod z pliku hotel_mapka.php generuje się i wyświetla porządany rezultat. Natomiast mam problem z wywołanie pliku hotel_mapka.php w połączeniu z ajaxem. Czy ktoś może powiedzieć gdzie tkwi błąd lub jakiś zgrzyt?

Kod głównej strony:
  1. <?php
  2. echo'<script type="text/javascript" src="ajaxcore2.js"></script>';
  3. <a href="#" onclick="loadArticle(4,'.$id_hotel.')" id="btn4">Mapka</a>  
  4. <div id="dataDiv" class="dataDiv">
  5. </div>
  6. ?>


ajaxcore2.js
  1. function getXMLHttpRequestObject()
  2. {
  3.  try{
  4.    return new XMLHttpRequest();
  5.  }
  6.  catch(e){
  7.    try{
  8.      return new ActiveXObject("Microsoft.XMLHTTP");
  9.    }
  10.    catch(e){
  11.      return false;
  12.    }
  13.  }
  14. }
  15.  
  16. function startGETRequest(url, onComplete, onEnd)
  17. {
  18.  var XMLHttpRequestObject = getXMLHttpRequestObject();
  19.  if(XMLHttpRequestObject){
  20.    XMLHttpRequestObject.open("GET", url);
  21.    XMLHttpRequestObject.onreadystatechange = function()
  22.    {
  23.      if (XMLHttpRequestObject.readyState == 4){
  24.        if(XMLHttpRequestObject.status == 200){
  25.          var responseXML = XMLHttpRequestObject.responseXML;
  26.          var responseText = XMLHttpRequestObject.responseText;
  27.          onComplete(responseText, responseXML);
  28.        }
  29.        delete XMLHttpRequestObject;
  30.        onEnd();
  31.      }
  32.    }
  33.    XMLHttpRequestObject.send(null);
  34.  }
  35. }
  36.  
  37. function startPOSTRequest(url, params, onComplete, onEnd)
  38. {
  39.  var XMLHttpRequestObject = getXMLHttpRequestObject();
  40.  if(XMLHttpRequestObject){
  41.    XMLHttpRequestObject.open("POST", url);
  42.    XMLHttpRequestObject.setRequestHeader(
  43.      'Content-Type', 'application/x-www-form-urlencoded');
  44.    XMLHttpRequestObject.onreadystatechange = function()
  45.    {
  46.      if (XMLHttpRequestObject.readyState == 4){
  47.        if(XMLHttpRequestObject.status == 200){
  48.          var responseXML = XMLHttpRequestObject.responseXML;
  49.          var responseText = XMLHttpRequestObject.responseText;
  50.          onComplete(responseText, responseXML);
  51.        }
  52.        delete XMLHttpRequestObject;
  53.        onEnd();
  54.      }
  55.    }
  56.    XMLHttpRequestObject.send(params);
  57.  }
  58. }
  59.  
  60.  
  61. disableButtons = false;
  62.  
  63. function loadArticle(id,id_hotel)
  64. {
  65.  if(disableButtons) return;
  66.  switch(id){
  67.       case 4 : url = "hotel_mapka.php?id_hotel="+id_hotel;break;
  68.           default : return;
  69.  }
  70.  disableButtons = true;
  71.  startGETRequest(url, onComplete, onEnd);
  72. }
  73.  
  74.  
  75.  
  76.  
  77. function onComplete(text, xml)
  78. {
  79.  var dataDiv = document.getElementById('dataDiv');
  80.  dataDiv.innerHTML = text;
  81. }
  82.  
  83. function onEnd(text, xml)
  84. {
  85.  disableButtons = false;
  86. }


hotel_mapka.php
  1. <html>
  2. <head>
  3. <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAArcTI4AUms-Ap0pzyv8VmiRRdludAuV2N6ZNTdeB76hcXJHnZNBQrzcKEIAzMpfYBL9pOLLzjcMznMQ"
  4. type="text/javascript"></script>
  5.  
  6. <?
  7. include("baza.php");
  8. $id_hotel=$_GET['id_hotel'];
  9.  
  10. $query = mysql_query ("SELECT * FROM  hotel WHERE id='$id_hotel'");
  11. $wiersz = mysql_fetch_array($query);
  12. $adres=$wiersz['adres'].", ".$wiersz['miasto'].", PL";
  13. ?>
  14.  
  15. <script type="text/javascript">
  16.  var opis = <?php echo '"'.$adres.'"'; ?>;
  17.  var geodecoder = null;
  18.  var map = null;
  19.  var address;
  20.  function load() {
  21.    if (GBrowserIsCompatible()) {
  22.      map = new GMap2(document.getElementById("map"));
  23.      geocoder = new GClientGeocoder();
  24.      showAddress(opis);
  25.      map.setCenter(point, 16);
  26.   }
  27. }
  28.  
  29.   function showAddress(address) {
  30.       var map = new GMap2(document.getElementById("map"));
  31.  
  32.       if (geocoder) {
  33.        geocoder.getLatLng(
  34.          address,
  35.          function(point) {
  36.            if (!point) {
  37.              alert(address + " not found");
  38.            } else {
  39.         map.clearOverlays()
  40.        
  41.          map.setCenter(point, 15);
  42.         var marker = new GMarker(point);
  43.         map.addOverlay(marker);
  44.       map.addControl(new GLargeMapControl())
  45.       var tabs = [new GInfoWindowTab("Adres", opis),new GInfoWindowTab("sze/dl geog", "szerokosc "+ point.lat().toFixed(5)+"<br> dlugosc "+point.lng().toFixed(5))];
  46.       marker.openInfoWindowTabsHtml(tabs);      
  47.            }
  48.          }
  49.        );
  50.      }
  51.    }
  52. </script>
  53.  
  54. <body onload="load()">
  55. <table border="1">
  56. <tr>
  57.    <td><div id="map" style="width: 500px; height:400px"></div></td>
  58. </tr>
  59. </table>
bazyliszek83
Problem chyba leży w tym że skrypt hotel_mapka.php zwraca javascript, a to przy wywołaniu przez AJAX zwyczajnie nie działa.

Jeśli chcesz pozostać przy wywołaniu ajax to proponuje funkcje JS wyrzucić z hotel_mapka.php do ajaxcore2.js lub do osobnego pliku .js.

Dane które chcesz wstawić do funkcji JS możesz zaaplikować np przy pomocy JSON...
kaznodzieja
I tak ciągle nie umiem tego zrobić siedzę juz kolejny dzień i ciągle robie coś nie tak!

Proszę o pomoc!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.