2011-04-22 2 views
0

J'apprends le JSON. Je viens d'écrire un code simple qui ne fonctionne pas et aussi ne pas donner d'erreur en cliquant sur le bouton. alors s'il vous plaît aidez-moi à attraper l'erreur. voici mon html.Erreur de rencontre concernant javascript et JSON

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script type="text/javascript" language="javascript"> 
     function GetJSON() 
     { 
      alert("pp"); 

      var moviereviewtext = "{"title": "Friday the 13th", "year": 1980, "reviews": 
      [{"reviewer": "Pam", "stars": 3, "text": "Pretty good, but could have used more Jason"}, 
      {"reviewer": "Alice", "stars": 4, "text": "The end was good, but a little unsettling"}]}"; 
      var jsonobj = eval("(" + moviereviewtext + ")"); 

      var reviewername = jsonobj.reviews[0].reviewer; 
      var numberstars = jsonobj.reviews[0].stars; 
      var reviewerthoughts = jsonobj.reviews[0].text; 

      alert(reviewername); 
      alert(numberstars); 
      alert(reviewerthoughts); 
     } 
    </script> 
</head> 
<body > 
    <form id="form1" runat="server"> 
     <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="GetJSON();return false;" /> 
    </form> 
</body> 
</html> 

Répondre

1

Cela dépend navigateur, mais avec quelques petits changements:

// Use single quote to surround and line continuations to support new lines. 
var movieReviewText = 
    '{"title": "Friday the 13th", "year": 1980, "reviews":\ 
    [{"reviewer": "Pam", "stars": 3, "text": "Pretty good, but could have used more Jason"},\ 
    {"reviewer": "Alice", "stars": 4, "text": "The end was good, but a little unsettling"}]}'; 

var obj = JSON.parse(movieReviewText); // This should be available IE8+, FF3+ 

, notez également qu'une fonction qui commence par une lettre majuscule est par convention considéré comme un constructeur. Le nom de votre fonction pourrait également être amélioré car la fonction n'obtient pas réellement JSON. Peut-être quelque chose comme ça?

function parseMovieReview() { 


} 
+0

Merci pour l'effort mais pas de chance ..... ne fonctionne toujours pas. – Thomas

1

Je pense que le problème est dans le code ASP. Essayez de laisser ASP de côté. Le code suivant fonctionne pour moi:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 

    <script type="text/javascript" language="javascript"> 
     function GetJSON() 
     { 
      alert("pp"); 

      var moviereviewtext = '{"title": "Friday the 13th", "year": 1980, "reviews":\ 
      [{"reviewer": "Pam", "stars": 3, "text": "Pretty good, but could have used more Jason"},\ 
      {"reviewer": "Alice", "stars": 4, "text": "The end was good, but a little unsettling"}]}'; 
      var jsonobj = eval("(" + moviereviewtext + ")"); 

      var reviewername = jsonobj.reviews[0].reviewer; 
      var numberstars = jsonobj.reviews[0].stars; 
      var reviewerthoughts = jsonobj.reviews[0].text; 

      alert(reviewername); 
      alert(numberstars); 
      alert(reviewerthoughts); 
     } 
    </script> 
</head> 
<body > 
    <form id="form1"> 
     <Button ID="Button1" Text="Button" OnClick="GetJSON();return false;" /> 
    </form> 
</body> 
</html>