Ошибка при работе с javascript и JSON - PullRequest
0 голосов
/ 22 апреля 2011

я учу JSON.я просто пишу простой код, который не работает, а также не выдает никакой ошибки при нажатии на кнопку.поэтому, пожалуйста, помогите мне поймать ошибку.вот мой HTML.

<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>

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Я думаю, что проблема в коде ASP. Попробуйте оставить ASP в стороне. У меня работает следующий код:

<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>
1 голос
/ 22 апреля 2011

Это зависит от браузера, но с некоторыми небольшими изменениями:

// 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+

Также обратите внимание, что функция, которая начинается с заглавной буквы, условно считается конструктором.Имя вашей функции также может быть улучшено, так как функция на самом деле не получает JSON.Может быть как то так?

function parseMovieReview() {


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...