121 votes

HTML/Javascript : comment accéder aux données JSON chargées dans une balise script avec src set

J'ai ce fichier JSON que je génère sur le serveur et que je veux rendre accessible sur le client comme la page est visualisable. En gros, ce que je veux réaliser est le suivant :

J'ai la balise suivante déclarée dans mon document html :

<script id="test" type="application/json" src="http://myresources/stuf.json">

Le fichier référencé dans sa source contient des données JSON. Comme je l'ai vu, les données ont été téléchargées, tout comme cela se passe avec les scripts.

Maintenant, comment puis-je y accéder en Javascript ? J'ai essayé d'accéder à la balise script, avec et sans jQuery, en utilisant une multitude de méthodes pour essayer d'obtenir mes données JSON, mais d'une manière ou d'une autre, cela ne fonctionne pas. Obtenir son innerHTML aurait fonctionné si les données json avaient été écrites en ligne dans le script. Ce qui n'a pas été le cas et ce n'est pas ce que j'essaie de faire.

La demande JSON à distance après le chargement de la page n'est pas non plus une option, au cas où vous voudriez la suggérer.

-5voto

Seth C. Points 87

Cette réponse ci-dessus est fausse. Vous pouvez ABSOLUMENT charger une variable de données JSON en utilisant la balise source script. Nous le faisons avec google maps avec un fichier externe, cross domain, en utilisant la balise source :

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script src="https://api.raprec.com/salesforce/soap/?build=territories.json.inc" type="text/javascript"></script>
<script src="/wp-content/themes/raprec-green/js/markerclusterer.js" type="text/javascript"></script>

Ensuite nous l'utilisons en javascript, le fichier SRC charge la var appelée "data" :

<script>for (var i = 0; i < data.locations.length; ++i) {addMarker();}</script>

Notez que si vous utilisez la variable dans une fonction, vous devez d'abord faire référence à l'objet fenêtre pour obtenir la variable globale. function logDataVar(){ console.log(window.data) ; } logDataVar() ;

Pour en savoir plus, cliquez ici : http://snook.ca/archives/javascript/global_variable

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X