2011-08-19 4 views
0

J'ai une structure de dossier comme celle-ci.Le fichier Json ne se charge pas

  • [site]
    • [js]
    • [JSON]
      • hints.json
    • page.html

Maintenant, quand je lancer mon page.html J'ai un bouton qui quand je clique va charger mon fichier hints.json. Voici mon script pour charger le JSON.

$(function(){ 

    var jsonURL = "json/hints.json"; 
    var butt = $('.button .hints li'); 
    butt.find('a').click(function(evt){ 

    $.getJSON(jsonURL, function(value){ 
     console.log(" title = ", value.intro[0].title); 
    }); 



    }); 

}); 

Structure de fichier Json.

{ 
    "intro": [ 
       {"title": "title text", "copy": "copy text1"}, 
       {"title": "title text", "copy": "copy text1"} 
      ], 
    "active":[ 
       {"title": "Title text for page active", "copy": "copy text"} 
      ] 
} 

Quelqu'un peut-il me dire pourquoi cela ne fonctionnerait pas.

Mise à jour: Ceci a été testé localement pas à partir d'un serveur.

Voici un exemple jsfiddle même si j'essaye de le faire fonctionner localement. http://jsfiddle.net/r3bPC/1/

+0

recevez-vous des erreurs? –

+0

Avez-vous manqué le type JSON ou est-ce vraiment ce qui vous est envoyé? Si oui, c'est faux. – Joe

+0

utilisez Firefox + Firebug, ouvrez l'onglet NET et voir votre requête AJAX. Vous verrez la réponse ou une erreur 404. –

Répondre

3

Structure de fichier Json.

{ 
    "intro": [ 
       {"title": "title text", "copy": "copy text1"}, 
       {"title": "title text", "copy": "copy text1"} 
      ], 
    "active":[ 
       {"title": Title text for page active, "copy": "copy text"} 
      ] 
} 

Dump dans http://jsonlint.com/ ....

Parse error on line 14: 
...   "title": Titletextforpageacti 
-----------------------^ 
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 

Eh bien, il est votre problème.

Partie 2

Grab que JS:

$(function(){ 

    var jsonURL = "json/hints.json"; 
    butt.find('a').click(function(evt){ 

    $.getJSON(jsonURL, function(json){ 
     // $("#title").text(json.name); 
     console.log(" title = ", json.intro[0].title); 
    }); 

}); 

courir par http://jshint.com/ ...

Errors: 

Line 4 butt.find('a').click(function(evt){ 
'butt' is not defined. 
Line 1$(function(){ 
Unmatched '{'. 
Line 11}); 
Expected ')' and instead saw ''. 
Line 11}); 
Missing semicolon. 

Eh bien, il y a l'autre problème. Ps, des mégots indéfinis me font peur.

+0

Merci Incognito J'ai corrigé la chaîne json, comme pour le but étant indéfini. Quand je fais un fichier consoloe.log, il montre le fonctionnement du bouton, c'est le $ .getJSON qui ne se charge pas.J'ai mis à jour mon code pour montrer ce que butt est.var butt = $ ('. ' – Chapsterj

+0

Aussi après avoir couru mon code dans jshint il a passé correctement.Je sais donc son $ .getJSON (jsonURL, fonction (json) { qui ne sont pas exécutés pour une raison quelconque – Chapsterj

+0

Faites attention à ce que jshint vous dit JS Hint vous dit ce que c'était .. – Incognito

0

complet et code testé A fait,

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function(){  
$.ajax({ 
type:'GET', 
url:'hints.json', 
dataType:'json', 
success:function(json){ 
alert(json.intro[0].title); //this alerts title text 
}, 
error:function(){ 
alert("dssdsdd"); 
} 
}); 


}); 

</script> 

ou

$.getJSON("hints.json", function(json){ 

     alert(json.intro[0].title); 
    }); 

hints.json

{ 
    "intro": [ 
       {"title": "title text", "copy": "copy text1"}, 
       {"title": "title text", "copy": "copy text1"} 
      ], 
    "active":[ 
       {"title": "Title text for page active", "copy": "copy text"} 
      ] 
} 

getJSON success callback

var jqxhr = $.getJSON("hints.json", function() { 
    alert("success"); 
    alert(json.intro[0].title); 
}) 
.success(function() { alert("second success"); }) 
.error(function() { alert("error"); }) 
.complete(function() { alert("complete"); }); 
+0

Pourquoi cela ne fonctionnerait pas en utilisant $ .getJSON(). Pourquoi est-ce que je voudrais utiliser un appel de $ .ajax() quand je n'appelle pas ajax? – Chapsterj

+0

son travail avec 'getJSON' !! – Rafay

+0

Ok c'est super mais ça ne marche pas pour moi :) Je suis désolé mais mon niveau de frustration est plutôt élevé en ce moment avec ce code. Donc désolé si je semble court. Donc, vous avez même essayé comme j'ai un chemin comme ceci: json/hints.json en utilisant un clic de bouton comme j'ai configuré dans mon exemple jsfiddle et mon exemple local – Chapsterj