Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    AJAX call problema con parametro GET

    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

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non chiarissimo il processo (metti un link alla pagina demo online), fai comunque attenzione alle virgolette " nel codice php, ricordati che Ajax non interpreta (normalmente) il codice js coiè i tag <script>....</script>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Grazie per il tempo che mi dedicate. In effetti ho omesso di dire che nel php ho tolto via tutte le "\" prima delle virgolette, l'ho fatto per rendere più leggibile a chi mi risponde ( il problema non credo sia di "" perchè se copio-incollo l'indirizzo nell'url getmappa.php funziona).
    Scusa l'ignoranza, cosa intendi per demo online? Qualcosa tipo js fiddle per il forum html.it?

    Il processo dovrebbe essere questo:

    1) main.php: scelgo un'opzione dalla select
    2) parte richiesta al db con query, da query disegno una mappa in javascript e inserisco in un div
    3) il div con la mappa è incluso in main.php

    Ovviamente il vantaggio sta nel cambiare mappa a seconda del valore selezionato in select box.

    Grazie

  4. #4
    Credo che il problema sia in questa linea di codice:

    var getforma = getUrlVars()["f"];

    E' nello script della pagina chiamata tramite ajax (getmappa.php).
    Credo che una volta caricata nella pagina che la include (main.php nel mio caso), lo script vada a cercare nell'url errata, come se cercasse in: main.php?f=... anzichè in getmappa.php?f=....
    Può essere questo il problema?
    Se sostituisco la riga con var getforma="stringa"; il tutto gira e carica la mappa relativa ai dati dell'ipotetico "stringa"

    Come risolvere?
    Grazie

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non c'ho capito molto, la variabile "f" getmappa.php la devi recuperare da php $_GET["f"]
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Sì, la recupero con $_GET in php e questo passaggio funziona.
    Ciò che non va è la parte in javascript.

    codice:
    var  getforma = getUrlVars()["f"];
    è nel codice della pagina getmappa.php. Se scrivo nel mio browser getmappa.php?f=Forma1, quindi carico getmappa diciamo in modalità stand-alone, getmappa funziona correttamente.

    Se invece la chiamo con ajax (da main.php) mediante
    codice:
    xmlhttp.open("GET","getmappa.php?f="+forma,true);
    non va

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Fatico a seguenti se la variabile al recuperi lato server non capisco cosa ti serve getUrlVars()["f"] che oltretutto non riconosco come sintassi sembra una funzione ma la gestisci come una array sicuro che sia corretta? La console da errori? Come ti ho già detto ajax non interpreta i tag script probabilmente il problema è li
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    La variabile f mi serve anche lato javascript perchè è la funzione java che disegna la mappa, per farlo ha bisogno di un file csv il cui nome è memorizzato in f, passato col GET da main.php.

    Per quel che riguarda la sintassi non saprei, se scrivo getUrlVars("f") non funziona mentre se la passo così va.

    Inoltre se faccio la console errori su main.php mi segnala che la variabile getforma non è definita. Questo può essere dovuto a quello che dici tu, che ajax non interpreta i tag script. Per quest'ultimo problema aggiungo che se (in javascript) assegno a getforma="IlNomeDiUnFileSpecifico", senza quindi passaggio con il GET, funziona e l'ajax interpreta <script>

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non so che dirti, dovrei fare dei test ricreando il tutto operazione impossibile sul forum
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Eventualmente come potrei usare funzione eval? Leggo online che servirebbe a superare quel problema dell'interpretazione dello script da parte della chiamata ajax.
    Mi viene anche in mente, sempre leggendo online, che potrebbe essere un problema risolvibile tramite una callback nella parte ajax, ma come implementarla nel mio caso?

    Grazie mille per le risposte

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.