Ik gebruik een Javascript Api voor Google maps.
Vanuit de database zet ik met een PHP bestand (via XML) de gegevens om naar Javascript.
Dat gaat allemaal goed.
Nu verander ik in de kaart een cirkel (slepen, groter/kleiner).
Vervolgens voeg ik deze nieuwe gegevens weer toe aan de PHP.
En dan gaat het verkeerd. De nieuwe gegevens worden aangeleverd via een $_POST.
De XML wordt weliswaar netjes gemaakt op grond van de nieuwe gegevens
(markers plaatsen binnen de cirkel).
Maar blijkbaar zit er dan wat verkeerd in de timing met het Javascript?
Met vaste gegevens (Utrecht) geen probleem.
Hier de belangrijkste stukjes (denk ik).
Iemand die me verder kan helpen?

PHP

$query = "SELECT * FROM markers";

$result = mysql_query($query);
if (!$result) {
  die('Invalid query: ' . mysql_error());
}

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

//Start XML file, echo parent node
echo '<markers>';
// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){

$haversign= new HaverSign();


if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	$lat2 = $_POST['lat'];
	$lon2 = $_POST['lon'];
	$rad2 = $_POST['rad'];
	
//echo $lat2."  ".$lon2."  ".$rad2;
}

//DEFINE (R, 6367000); // Radius van de aarde

//Utrecht
//$lat2 = 52.0901422;
//$lon2 = 5.1096649;
//$rad2 = 180;

//while ($row = @mysql_fetch_assoc($result)){
$lat3 =	$row['lat'];
$lon3 = $row['lng'];
$address = $row['address'];	

$dist = $haversign->getDistance($lat2,$lon2,$lat3,$lon3);
//echo $dist."  ".$rad."  ".$address."<br>";

if ($dist < $rad2){

    // ADD TO XML DOCUMENT NODE
  echo '<marker ';
  echo 'name="' . parseToXML($row['name']) . '" ';
  echo 'address="' . parseToXML($row['address']) . '" ';
  echo 'lat="' . parseToXML ($row['lat']) . '" ';
  echo  'lng="' . parseToXML ($row['lng']) . '" ';
  echo 'type="' . parseToXML ($row['type']) . '" ';
  echo '/>';
}
}
 //End XML file

echo '</markers>';

?>


Javascript


	downloadUrl(testm, function(data)            	
    	{ 
   		  var xml = data.responseXML;
          var markers = xml.documentElement.getElementsByTagName("marker");
//alert("markers "+markers.length);
          for (var i = 0; i < markers.length; i++) {
        	  var name = markers[i].getAttribute("name");
 //alert(name);
        	  var address = markers[i].getAttribute("address");
              var type = markers[i].getAttribute("type");
.
.
.
.
.
    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);
        }


Toevoeging op 28/04/2016 13:26:42:

Als ik rechtstreeks stuur vanaf de form (zowel $_GET, als $_GET bij PHP) dan komt alles goed aan.
Wanneer ik het stuur vanaf de Iframe op de website, dan gaat het mis. Iframe heb ik even gedaan ivm de refesh anders.
Ik heb het een en ander verplaatst naar de gewone website.
Maar ik kan nu de submit niet op de gewone manier geven.
Iemand een idee?


<script type="text/javascript">
    $("document").ready(function(){
      $(".js-ajax-php-json").submit(function(){
        var data = {
          "action": "test"
        };
        data = $(this).serialize() + "&" + $.param(data);
        $.ajax({
          type: "POST",
          dataType: "json",
          url: "test_map4.php", //Relative or absolute path to response.php file
          data: data,
          success: function(data) {
            $(".the-return").html(
              "lat " + data["lat"] + "<br />lon " + data["lon"] + "<br />radius: " + data["rad"] + "<br />JSON: " + 

    data["json"]
            );
            alert("Form submitted successfully.\nReturned json: " + data["json"]);
          }
        });
        return false;
      });
    });
 </script>


document.getElementById("lat").value = lat;
document.getElementById("lon").value = lon;
document.getElementById("rad").value = zz;
document.getElementById("form").submit(); // dit werkt niet, ook niet als ik een id en naam toevoeg "form".


<form class="js-ajax-php-json" method="post" accept-charset="utf-8" target = "stuur">
<input type = "text" id = "lat" name = "lat" value = "52.090737">
  <input type = "text" id = "lon" name = "lon" value = "5.121420">
  <input type = "text" id = "rad" name = "rad" value = "180">
  <input type="submit" name="submit" value="Submit form"  />
</form>


<form class="js-ajax-php-json" method="post" accept-charset="utf-8" target = "stuur">


Ik mis hier het ID?

document.getElementById("form")


PS:
Verander de name atribute van de submit knop eens ^^
Klopt helemaal.... Hoort ook zo. Maar ook al probeer ik het met ID dan werkt het niet.
Ook al geprobeerd via de class te submitten.
Heeft denk ik te maken dat na de submit een Ajax wordt geactiveerd.
Want wordt na de submit naar een een PHP gestuurd.
Ik heb met firebug gekeken..als ik op de submitknop druk komen netjes de gebevens uit de database
met de gewijzigde gegevens.
Heb al heel wat uitgeprobeerd.... Maar lukt me steeds niet.

<input type="submit" name="submit" value="Submit form"  />


Je overschrijft de form.submit hiermee (de functie die je wilt aanroepen).
Verander de name eens, dan werkt het wel.

OM het zichtbaar te maken:
Wat je nu hebt: https://jsfiddle.net/Lyc57snt/
Met de name van de submit knop gewijzigd: https://jsfiddle.net/Lyc57snt/1/
De standaard mogelijkheden werken niet. Ook niet met de naamswijziging.
Denk dat het combinatie is van submitten vanaf een javascript functie.
En de Ajax verwacht echt een click op de submitknop.
Ik wil juist die knop overslaan en vanuit script submit geven.
Maar bedankt voor het meedenken...
Volgens mij ben je het veel ingewikkelder aan het maken dan nodig is.
Kan je eens precies uitleggen wat de bedoeling van dit script is?
Ik heb met firebug lite in de console gekeken.
Na wat wijzigingen blijkt nu dat aan de POST kant de wijzigingen netjes worden verwerkt.
Maar de GET kant blijft leeg.
Blijkbaar is de afstemming niet juist.
Bovendien heeft dit betrekking op een reload van Javascript Api google maps.
En dat schijnt dan ook nog eens anders te zijn.

Ik heb geen ervaring met auto complete functies, etc.
Als iemand me wat tips kan geven hoe dat in te bouwen in de huidige scripts, heel graag.
Ik ben er uitgekomen...
Het werkt nu allemaal.
Dus nu nog wat opties erin bouwen.

Reageren