Почему этот код предупреждает "неопределенный"

Wathsara Wishwantha Daluwatta спросил: 28 апреля 2018 в 09:50 в: javascript

Ниже упоминается мой исходный код, и я просто получаю данные json из внешнего url, и я просто пытаюсь предупредить имя парня, чьи данные принадлежат. Но он не работает.

<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width">    <title>Fetch json example</title>    <link rel="stylesheet" href="style.css">  </head>  <body><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script>
   $(document).ready(function(){   $.ajax({
            url: "https://api.stackexchange.com/2.2/users/4944823?order=desc&sort=reputation&site=stackoverflow",
            type: 'GET',
            dataType: 'json',
            success: function(res) {        var a = (JSON.stringify(res.items[0]));
        alert(a.display_name);
            }
        });});
  </script>
</body>
</html>

, когда я просто предупреждаю о alert(a);, он всегда дает исходные данные, но когда я пытаюсь предупредить что-то вроде a.display_name или что-то другое всегда возвращает undefined. На самом деле проблема.

2 ответа

Anirudha Gupta ответил: 28 апреля 2018 в 10:12

JSON.stringify используется при отправке данных на сервер (он создает строковое представление объекта javascript). JSON.parse используется для parse json, полученного с сервера.

editВы не нужно использовать JSON.parse вообще. поскольку вы упоминаете dataType 'json'.

этот код будет работать.

res.items[0]
Anirudha Gupta ответил: 28 апреля 2018 в 10:11
@baao благодарит меня за исправление,
Emeeus ответил: 28 апреля 2018 в 10:18

Ответ уже анализируется, когда dataType: 'json', поэтому это должно работать:

$(document).ready(function(){   $.ajax({
            url: "https://api.stackexchange.com/2.2/users/4944823?order=desc&sort=reputation&site=stackoverflow",
            type: 'GET',
            dataType: 'json',
            success: function(res) {
              alert(res.items[0].display_name);
            }
        });});

Если вам нужно проанализировать строку как json, вы должны использовать JSON .parse (string), JSON.stringify (json) используется для преобразования json в строку.