Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Importare dati Json da una pagina di un dominio esterno al proprio

    Buongiorno,

    sto lavorando a una pagina che deve mostrare dati ricevuti da una pagina esterna al mio dominio(questa pagina esterna non è sotto il mio controllo). Questa pagina esterna restituisce un json con la seguente struttura:

    {

    "definition" : {

    "accountID" : 19943,

    "profileID" : "Z3WIPu86X77",

    "ID" : "oOEWQj3sUo6",

    "name" : "Site Pages",

    "description" : "A10_RPT_Pages_SD",

    "language" : null,

    "timezone" : "UTC 1",

    "dimensions" : [

    {

    "ID" : "pages",

    "name" : "Page"

    }

    ],

    "measures" : [

    {

    "name" : "PageViews",

    "ID" : "CAoNYspmFb5",

    "columnID" : 1,

    "measureFormatType" : null

    }

    ]

    },

    "data" : [

    {

    "period" : "Month",

    "start_date" : "2014-03",

    "end_date" : "2014-04",

    "attributes" : {



    },

    "measures" : {

    "PageViews" : 281

    },

    "SubRows" : {



    }

    }

    ]

    }
    Quello che vorrei riuscire a fare è di riuscire ad accedere al dato data.measures.PageViews per poterlo poi inserire nel mio codice html.

    Per il momento quello che ho fatto è definire la seguente funzione javascript nell'head del mio html:
    <script type="text/javascript">
    function parseResult(myData)
    {
    alert(myData.data);
    }
    </script>

    che utilizzo facendo la callback dell'indirizzo della pagina esterna nella seguente maniera all'interno del body:
    <script type="text/javascript" src="https://link-esterno&callback=parseResult"></script>

    In questa maniera mi stampa sull'alert la scritta "Object: object".

    Quando provo però a fare alert(myData.data.measures); mi fa un alert vuoto e se provo a fare alert(myData.data.measures.PageViews); non mi stampa niente e mi da errore nella console di firebug.

    Ho letto un po' di guide su jsonp ma non sono riuscito a venirne a capo. Inoltre vorrei poter mettere il dato in una variabile da poter usare e richiamare all'interno dell'html per stamparla dove preferisco.

    Vi ringrazio in anticipo 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,132
    Se il sito esterno è in formato json non puoi leggerlo come jsonp (che è coss-dominio) e il formato json (non è cross-dominio).
    Pertanto o il sito esterno ti fornisce un formato jsonp oppure devi far dialogare i due server
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Chiedo scusa ma non ho capito cosa intendi. Cosa dovrei fare esattamente? Potresti scrivermi un esempio di ciò che intendi o mandarmi il link di qualche guida relativamente a ciò che dici?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    posta il link esterno cosi vediamo se supporta jsonp

  5. #5
    Ciao, purtroppo non posso postare il link perché richiedere autenticazione. Comunque lo supporta sicuramente perché nella documentazione dice che è supportato: http://help.webtrends.com/en/dxapi/#parameters_dx.html

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    perfetto, prova cosi allora: myData.data[0].measures.PageViews

  7. #7
    Ok adesso funziona, grazie mille...

    Comunque ora come faccio a usare ovunque il dato di PageViews? Se modifico la funzione che ho nell'head e metto:
    <script type="text/javascript">
    function parseResult(Data) {
    myData=Data.data[0].measures.PageViews;
    }
    </script>

    e poi richiamo la funzione all'interno del body con
    <script type="text/javascript" src="link-esterno&callback=parseResult">
    alert(myData);
    </script>

    non mi stampa nessun alert. eppure myData dovrebbe essere una variabile globale no?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Non conta se è globale o meno, la chiamata al link esterno ha un tempo di elaborazione non è istantanea. Quando lanci l'alert la chiamata non è ancora terminata, quindi non è stato chiamato il metodo parseResult, di conseguenza non è stata valorizzata la variabile mydata.

  9. #9
    e quindi come dovrei fare? forse dovrei fare come mi consigliava cavicchiandrea? Solo che non ho idea di dove cominciare. Mi sapreste dare qualche dritta o qualche tutorial?
    Ultima modifica di kiljaeden; 23-04-2014 a 16:14

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    e quindi come dovrei fare?
    Dipende, forse non devi fare nulla. Tieni conto che la risorsa esterna viene contattata al caricamento della pagina(prima o dopo il rendering dipende da dove è posizionato quel tag script). Ora quando hai bisogno di questi dati? li devi presentare nella pagina iniziale? devi mostrarli dopo che l'utente ha scatenato qualche evento(che ne so un click su un bottone)? Se è il secondo caso non devi fare nulla

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.