Salve a tutti,
ho un problema con una call ajax (in main.php) a partire da una select, passando un parametro (f) con metodo get ad una pagina (getmappa.php) che effettua una query al db mysql grazie a quel parametro, genera una mappa e la inserisce in un div che viene poi incorporato in main.php.
getmappa.php?f=blablabla se scritto nell'url funziona alla perfezione.
Funziona tutto bene anche se rendo statico il lancio della call (ovviamente non ha senso ma è solo un debug):
con xmlhttp.open("GET", "getmappa.php?f=blabla",true) e dall'altra parte getmappa cui assegno ad una variabile javascript il valore "blablabla".
Il tutto non gira se rendo davvero dinamica la call:
codice:
function showmappa(forma) {
if (forma == "") {
document.getElementById("mappa").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("mappa").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","getmappa.php?f="+forma,true);
xmlhttp.send(null);
}
}
la funzione showmappa parte su evento onchange della select
In getmappa.php ho il seguente codice:
codice:
$f = (ISSET($_GET['f']));
if(ISSET($_GET['f']))
$f=strval($_GET['f']);
//codice mancante con query al db
//di seguito codice javascript stampato in php con funzione echo
echo"
<div id="mappa2"></div>
//funzione in javascript per prelevare parametro da url
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
//prelevo il valore ed elimino spazie e slash, quel parametro è il nome di un file csv che serve per caricare la mappa in javascript
var getforma = getUrlVars()["f"];
forma=getforma.split(' ').join('_');
forma=forma.replace(\"/\", \"_\");
//di seguito codice javascript per update mappa
d3.csv(forma+".csv"
//codice javascript
);
//di seguito codice javascript per creazione mappa
var map = new Datamap({
//codice
};
</script> <!--chiudo tag html -->
</body>
</html>
"; //chiudo echo in php
Grazie per l'aiuto