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

    problemi con json remoto

    Ciao a tutti,
    sto provando da giorni, senza risultati, a risolvere questo problema:
    come si scarica un json da javascript? Non sono un mago di javascript, però ho una dimestichezza molto buona con il C. Purtroppo non riesco a concludere nulla: il codice che ho messo insieme fino ad ora è questo

    <script type="text/javascript" >
    //Crea socket richiesta ajax
    function CreateXmlHttpReq2(handler) {

    var xmlhttp = null;
    try {
    xmlhttp = new XMLHttpRequest();
    } catch(e) {
    try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    xmlhttp.onreadystatechange = handler;
    return xmlhttp;
    }

    //scatta quando arrivano i dati richiesti da quella pagina
    function myHandler2() {


    document.write("Stato: "+myRequest.status+" ReadyState="+myRequest.readyState);
    if (myRequest.readyState == 4 /*&& myRequest.status == 200*/)
    {

    Load(eval(myRequest.responseText));
    }
    }

    //funzione da chiamare quando vuoi che venga interrogata la pagina all'url
    function Interroga(url)
    {
    myRequest = CreateXmlHttpReq2(myHandler2);

    myRequest.open("GET",url,true);
    myRequest.send(null);
    }

    //QUI USI IL VALORE CHE TI HA RITORNATO LA PAGINA

    function Load(obj)
    {

    document.write("FATTO!
    "+obj);

    }
    var myRequest = null;
    Interroga(unurlremoto.php);

    </script>

    I problemi sono diversi
    1) su firefox myRequest.readyState rimane bloccato a 2, e non ne comprendo il motivo ( forse qualche impostazione del browser? )
    2) Su chrome funziona.. ma perché myRequest.status rimane a Zero invece che diventare 200? ( il file che scarico è su un RUL remoto )
    3) Provo a stampare quanto ritornato dal json che ( forse ) è stato scaricato, e ottengo la scritta undefined. Il punto è questo: ho effettivamente scaricato quello che mi serve?

    Avessi la certezza di avere in mano almeno una stringa potrei creare io stesso il parsing adeguato, ma avendo problemi sia con lo scaricare i dati sia con il json ( non ho esperienza su questi temi ) ho bisogno di un piccolo aiuto. Resto a disposizione per chiarimenti, grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    ti consiglio di passare a jquery, si riescono a fare richieste ajax in una sola riga, senza dover avere a che fare con 2 funzioni o più.

    Per monitorare le richieste asincrone e i valori ritornati dalla pagina lato server puoi utilizzare su firefox il plugin firebug.

  3. #3
    grazie per il tuo celere intervento.
    Purtroppo non conosco ne ajax ne jquery ( l' ultimo non so quasi cosa sia ). Trovi degli errori in questo codice?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se con remoto intendi un json situato su un dominio diverso dal dominio del chiamante(richieste cross domain) devi utilizzare l'approcio jsonp a causa delle policy dei vari browser che bloccano queste chiamate. Cerca in rete trovi svariate guide.
    In realtà esiste un altro metodo ma funziona solo su browser molto recenti

  5. #5
    Ringrazio anche te..! Faccio una ricerca e vi faccio sapere com'è andata
    Io ci provo, spero di capirci qualcosa

  6. #6
    Niente da fare.
    Ho provato ad utilizzare questo codice ma anche qui non funziona nulla. In questo caso ho utilizzato un server in locale in php ( la pagina è effettivamente funzionante ) ma niente da fare.
    Bisogna tenere conto che il JSON viene creato Dinamicamente dal server appena faccio richiesta... forse questo può spiegare alcune cose..




    <script type="text/javascript">
    var cerchio = {
    visualizzaRisultato: function(data) {
    var contenitoreRisultato = document.getElementById("risultato");
    contenitoreRisultato.innerHTML = data.area;
    },

    creaRichiesta: function() {
    var script = document.createElement("script");
    script.src = "http://127.0.0.1:8888/risp.php?callback=5";
    document.body.appendChild(script);
    }
    }

    window.onload = function(){
    cerchio.creaRichiesta();
    }

    </script>

    <html>
    <head>
    <meta charset="utf-8" />
    <title>Calcolo area cerchio JSONP</title>
    </head>
    <body>
    <h1>Calcolo area cerchio</h1>
    <div id="risultato">

    </div>
    <script src="cerchio.js"></script>
    </body>
    </html>

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma stai usando jquery? Il metodo che t'ha consigliato Vindav che trovi descritto qui fa appunto uso di jquery e necessita di una "formattazione" sua che i due server (domini diversi) devono rispettare.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    In effetti sto facendo un poco di confusione.
    E' quindi sufficiente fare questo tipo di chiamata per ottenere il json remoto?

    stringa=jQuery.getJSON( url, [data,] [success(data, textStatus, jqXHR)] )

    //elaborazione stringa json

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    chiariamo un attimo le cose, hai detto che stai provando su un server locale, quindi gira tutto su questo server? se si ignora quanto detto da me nel post precedente, puoi fare una normalissima chiamata ajax, jsonp si usa esclusivamente per chiamate cross-domain.

    Ma stai usando jquery? Il metodo che t'ha consigliato Vindav che trovi descritto qui fa appunto uso di jquery e necessita di una "formattazione" sua che i due server (domini diversi) devono rispettare.
    In realtà puo farlo sia con jquery che con javascript nativo...

    codice:
    var cerchio = { 
    visualizzaRisultato: function(data) { 
    var contenitoreRisultato = document.getElementById("risultato"); 
    	contenitoreRisultato.innerHTML = data.area;
    }, 
    
    creaRichiesta: function() { 
    var script = document.createElement("script"); 
    script.src = "http://127.0.0.1:8888/risp.php?callback=cerchio.visualizzaRisultato"; 
    document.body.appendChild(script); 
    } 
    } 
    
    window.onload = function(){ 
    cerchio.creaRichiesta(); 
    }
    e questo è il json che si aspetta di ricevere dal server:

    cerchio.visualizzaRisultato({"area":"valore"})

  10. #10
    Al momento ho provato a vedere se funzionava qualcosa almeno in locale... quello di cui avrei bisogno è elaborare dei dati provenienti da un sito web esterno al mio

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.