Visualizzazione risultati 1 fino 18 di 18

Discussione: json

  1. #1
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito json

    ciao,
    se scrivo una cosa del genere:

    <script language="Javascript" src="http://map.geoup.com/geoup?template=CityName"></script>
    viene scritto nella pagina una cosa del genere:

    "Paris"

    (senza apici) in base alla località del proprio ip

    e fino a qui tutto ok

    vorrei fare la stessa cosa prendendo però i dati dal sito:

    http://freegeoip.net/json/

    estrapolando ciò che viene dato per il campo city ("Paris" per rimanere all'esempio di prima)

    grz a chi rispondera

  2. #2
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <script>
    var xmlhttp = new XMLHttpRequest();
    var url = "http://freegeoip.net/json/";
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var obj = JSON.parse(xmlhttp.responseText);
            document.getElementById("demo").innerHTML =
            obj.ip+ "<br>" +
            obj.country_code + "<br>" +
            obj.country_name + "<br>" +
            obj.region_code + "<br>" +
            obj.region_name + "<br>" +
            obj.city + "<br>" +
            obj.zipcode + "<br>" +
            obj.latitude + "<br>" +
            obj.longitude;
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    </script>
    </head>
    <body>
    <div id="demo"></div>
    </body>
    </html>

  3. #3
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    grazie mille intato, non sai quanto è apprezato.
    Ho modificato i. codice affingé restituisca solo i campi che mi interessano: città, regione, nazione

    Ecco il codice:


    <!DOCTYPE html>
    <html>
    <head>
    <script>
    var xmlhttp = new XMLHttpRequest();
    var url = "http://freegeoip.net/json/";
    xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    var obj = JSON.parse(xmlhttp.responseText);
    document.getElementById("demo").innerHTML =
    obj.city + "," + obj.region_name + "," +obj.country_name + ""
    }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    </script>
    </head>
    <body>
    <div id="demo"></div>
    </body>
    </html>

    <!--campi-->
    <!--attn il + non si mette per l'ultimo campo-->

    <!-- obj.ip+ "<br>" + -->
    <!-- obj.country_code + "<br>" + -->
    <!-- obj.country_name + "<br>" +-->
    <!-- obj.region_code + "<br>" + -->
    <!-- obj.region_name + "<br>" + -->
    <!-- obj.city + "<br>" + -->
    <!-- obj.zipcode + "<br>" + -->
    <!-- obj.latitude + "<br>" + -->
    <!-- obj.longitude;-->
    Come faccio a fare che vengano visualizzati sulla stessa riga separati da una virgola, come qst:

    Roma, Lazio, Italy
    ora invece restituisce:

    Roma
    Lazio
    Italy
    grazie mille ancora

  4. #4
    Guest

    Predefinito

    Cambia <br> con ,

    nota se registri informazioni sugli utenti ricordati di avvisarli

  5. #5
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    grz, in effetti era piuttosto elementare, ma dove diavolo ce l'ho la testa (se ce l'ho forse no)

  6. #6
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Allora ho qst codice che visualizza il codice dello stato dell'ip del visitatore, e sotto la bandiera, come faccio a fare in modo che "IT.png" venga generato in base a quanto restituito dal codice, ad es se l'ip del visitatore è come codice "IT" deve venire IT.png se è un visitatore americano US allora US.png, si può fare?
    Prendo le bandiera da una sottocartella locale in cui sono tutti contenuti in formato png e codificati a 2 lettere maiuscole (IT, US, UK ecc)

    Codice PHP:
    <!DOCTYPE html>
    <
    html>
    <
    head>

    </
    head>
    <
    body>
    <
    script>
    var
    xmlhttp = new XMLHttpRequest();
    var
    url = "http://freegeoip.net/json/";
    xmlhttp.onreadystatechange = function() {
    if (
    xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    var
    obj = JSON.parse(xmlhttp.responseText);
    document.getElementById("demo").innerHTML =
    obj.country_code
    }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    </script>

    <html>
    <div id="demo"></div>
    <img src="bandiere/IT.png" width="81" height="54" title="Bandiera" alt="Bandiera" />

    </html>

    </body>
    </html>
    Ultima modifica di gutguy2 : 18-08-2014 alle ore 19.51.45

  7. #7
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    assegna il valore del obj.country_code ad una variabile di testo e poi ci aggiundi il prefisso immagine ed il percorso
    esempio:
    var percorso = "http://www.miosito.com/img/";
    var bandiera = obj.country_code;
    var prefisso = ".png";
    var foto = percorso+bandiera+prefisso;

    quindi per modificare il SRC dell'immagine ti consiglio di assegnare un ID al tag IMG :

    $("#ID_IMG img").attr("src",foto);

    oppure puoi creare un altro DIV sempre con un ID e caricare l'immagine come background-image , però in questo caso devi modificare la variabile foto var foto = "url('"+percorso+bandiera+prefisso+"')";
    e devi definire nel CSS che il background non si ripeta , la sua dimensione e posizione
    quindi lo script diventa:

    $("#ID_IMG").css("background-image",foto);

    p.s.

    sto usando come script jQuery ma puoi usare anche solo JS
    Ultima modifica di NLSweb : 19-08-2014 alle ore 00.48.58

  8. #8
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    scusami ma sono poco pratico, non è che potresti modificare il codice d me riportato con la modifica che intendi? ho provato ma non ci sto saltando fuori, grazie mille, davvero.

    ps:
    per le immagini bandiera si può usare:
    http://geoip.flagfox.net/images/h64/IT.png
    http://geoip.flagfox.net/images/h64/DE.png
    http://geoip.flagfox.net/images/h64/US.png
    http://geoip.flagfox.net/images/h64/KY.png

    ecc

    basato su Codice nazione a 2 lettere
    Ultima modifica di gutguy2 : 19-08-2014 alle ore 15.10.24

  9. #9
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Ho modificato il tuo codice perchè era sbagliato , ecco ciò che mi chiedevi...

    Codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
    var xmlhttp = new XMLHttpRequest();
    var url = "http://freegeoip.net/json/";
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var obj = JSON.parse(xmlhttp.responseText);
            $("#demo").html( obj.country_code);
            var percorso = "http://geoip.flagfox.net/images/h64/";
            percorso = percorso + obj.country_code + ".png";
            $("#bandiera").css("background-image","url('"+percorso+"')");      
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    </script>
    <style>
    #bandiera{
     width:120px;height:54px;
     background-repeat:no-repeat;
    }
    </style>
    </head>
    <body>
    
    <div id="demo"></div>
    <div id="bandiera"></div>
    
    </body>
    </html>  
    Ultima modifica di NLSweb : 19-08-2014 alle ore 15.44.28

  10. #10
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    grz mille non sai quanto è apprezzato

  11. #11
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    scusami non voglio rompere troppo o approffitarne, ma come faccio a fare in modo che l'immagine venga postato con le sue dimensioni originali? perché alcune hanno dimensioni diverse tra loro, grazie mille

  12. #12
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Se ogni bandiera ha dimensioni diverse ed il numero di bandiere è molto elevato , ti conviene definire il width e height abbastanza grandi da poter visualizzare ogni tipo di bandiera e non differenziarle per ogni singola nazione.

    Se invece il numero di bandiere è ridotto , e conosci le dimensioni delle immagini ti basta usare uno switch con argomento obj.country_code , in cui definisci i casi per ogni nazione.

    se vuoi conoscere la dimensione di una immagine per poi applicare i giusti parametri di width e height
    puoi usare questo script
    Codice:
    var immagine = $("#DIV img");
    var foto = new Image();
    foto.src = immagine.attr("src");
    var larghezza = foto.width;
    var altezza = foto.height;
    Ultima modifica di NLSweb : 20-08-2014 alle ore 13.54.23

  13. #13
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    grazi mille, ultima cosa, poi anche mandarmi a quel paese a qst punto, sei stato molto disponibile e ti ringrazio infinitamente, ma come faccio ad integrare lo script sopra facendo in modo di postare oltre la bandiera, città, regione, nazione il campo "org" dal sito ipinfo.io?

    il codice che uso ora è qst:

    l'ho messo in toto nel blocco body perché vedevo che delle volte lasciando la parte che tu hai messo in hed non sempre andava:

    Codice HTML:
    <!--INIZIO Script bandiera, città, regione, nazione-->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
    var xmlhttp = new XMLHttpRequest();
    var url = "http://freegeoip.net/json/";
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var obj = JSON.parse(xmlhttp.responseText);
            $("#codice_nazione").html( obj.country_code);
            var percorso = "http://geoip.flagfox.net/images/h64/";
            percorso = percorso + obj.country_code + ".png";
            $("#bandiera").css("background-image","url('"+percorso+"')");
            document.getElementById("citta").innerHTML =
            obj.city + ",&nbsp;" + obj.region_name + ",&nbsp;" +obj.country_name + ""    
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    </script>
    <style>
    #bandiera{
    width:96px;height:64px;
     background-repeat:no-repeat;
    }
    </style>
    
    <!--FINE Script bandiera, città, regione, nazione-->
    
     
    <center>
    <!--INIZIO scrivo bandiera-->
    <div id="bandiera"></div>
    <!--FINE scrivo bandiera-->
    </center>
    
    <BR> 
     
    <center>
    <!--INIZIO scrivo città, regione, nazione attraverso lo script-->
    <div id="citta"></div>
    <!--FINE scrivo città, regione, nazione-->
    </center>

  14. #14
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    nel codice che hai postato c'è un errore manca il ; finale .....
    Codice HTML:
     document.getElementById("citta").innerHTML =
            obj.city + ",&nbsp;" + obj.region_name + ",&nbsp;" + obj.country_name ;

  15. #15
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    non capisco (non sottointendere mai nulla con me, sono troppo inesperto e ho basso iq fa te)

  16. #16
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Il codice , partendo dal mio primo esempio in poi , è corretto nella sua logica
    ma tu mi chiedi
    ma come faccio ad integrare lo script sopra facendo in modo di postare oltre la bandiera, città, regione, nazione il campo "org" dal sito ipinfo.io?
    nel primo esempio visualizzava già tutti i dati e nel secondo la bandiera
    quindi il codice da te postato , è corretto .. anche se non capisco..
    l'ho messo in toto nel blocco body perché vedevo che delle volte lasciando la parte che tu hai messo in hed non sempre andava:
    in ogni caso nella riga in cui scrivi i dati città,nazione,ecc. c'é un errore di sintassi , ovvero manca il punto e virgola alla fine
    infatti nell'ultimo post ti scrivo come sostituire il codice errato.

    Se hai ancora dubbi fammi sapere e ti posto l'intero codice funzionante...

    .. e non ti preoccupare se sei inesperto .. si impara sbagliando : )

  17. #17
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    intanto ti irngrazio NLSweb pe rtutto l'aiuto, davvero grz.
    ho visto che mancava il ; finale, avevi ragione.
    Quello che volevo dire è che se metto una parte di codice tra gli head e lascio nel body solo il div, delle volte non funziona, cioè la pagina non riporta i dati città ecc ma rimane bianco, mettendo tutto il codice in body qst non succede.

    Per quello che voglio fare io praticamente prendere oltre i dati di bandiera, città, regione, nazione da freegeoip.net (vedi es. qui vorrei prendere il campo org da ipinfo.io (es qui), ora ti chiederai, ma perché non prendi tutto da ipinfo.io? Perché freegeoip.net è più attendibile ma non ha il campo org. Ho provato, ma non ci riesco, mi riporta solo i dati da freegeoip.net

  18. #18
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Devi eseguire due distinte chiamate , una a ipinfo e l'altra a freegeoip ...
    quindi prelevi i dati che ti servono dall'una e dell'altra e li inserisci in DIV diversi ; poi graficamente sistemi la visualizzazione.

    il dato ORG sara' quindi : obj.org

    dimmi se hai ancora difficolta' ..

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •