jQuery JSON не извлекает заголовки

#jquery #json

#jquery #json

Вопрос:

Хорошо, я пытаюсь получить заголовок из файла: main.txt , но это main.txt в той же папке (как вы можете видеть, это JSON).

Я использую это:

 <!DOCTYPE html>
<html>
    <head>
      <style>img{ height: 100px; float: left; }</style>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>

    <body>
        <div id="images">
            Hello<br />
        </div>
        <script>
            $.getJSON("main.txt",
                      function(data) {
                        $.each(data.items, function(i,items){
                            $("#images").append(items.id);
                            if (i == 3)
                                return false;
                        });
                      });
        </script>
    </body>
</html>
  

Однако … ничего не возвращается обратно, и в консоли Google Chrome ошибок нет.

Комментарии:

1. ничто не возвращается обратно, означает, что вы не получаете ответ от сервера или обработчик успеха не вызывается

Ответ №1:

Ответ прост: ваш файл не является допустимым JSON. Поэтому jQuery не может проанализировать его, и успешный обратный вызов не выполняется.

В JSON ключи и строки должны быть в двойных кавычках. Т.е.

 {
    'title': 'Home',
    ...
  

должно быть

 {
   "title": "Home",
   ...
  

Это всего лишь пример; вы должны исправить весь файл.

Используйте JSONLint для проверки вашего JSON. Ваш текущий текст выдает:

 Parse error on line 1:
{    'title': 'Home',   
-----^
Expecting 'STRING', '}'
  

Также ; в конце неверно.

Ответ №2:

Предполагая, что вы не выполняете междоменный запрос, у вас возникают следующие проблемы. JSON недопустим, как уже упоминалось @Felix.

Вы можете проверить это, перейдя в jsonlint.

Это сработало для меня локально:

 $(function(){

  $.getJSON("SOQ.txt",
  {
    tags: "title",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    console.log(data);
    $.each(data.items, function(i,item){
      console.log(item.id);
    });
  });
});
  

Вот допустимый JSON:

 {
    "title": "Home",
    "ids": [
        {
            "currentID": 1,
            "leftMap": 0,
            "rightMap": 0,
            "upMap": 0,
            "downMap": 0
        }
    ],
    "signs": [
        {
            "x": 8,
            "y": 13,
            "map": 1,
            "text": "Welcometothegame.<br/><br/>Outsideworldislocked.Makeyourownworld."
        }
    ],
    "entrances": [
        {
            "x": 12,
            "y": 4,
            "tile_after": 167,
            "item_req": 0
        },
        {
            "x": 3,
            "y": 5,
            "tile_after": 166,
            "item_req": 0
        },
        {
            "x": 7,
            "y": 7,
            "tile_after": 166,
            "item_req": 5
        }
    ],
    "items": [
        {
            "id": "6",
            "x": 10,
            "y": 2
        },
        {
            "id": "1",
            "x": 5,
            "y": 3
        }
    ],
    "monsters": [
        {
            "id": "1",
            "x": 13,
            "y": 9
        }
    ],
    "map": [
        [
            1,
            1,
            1,
            1,
            1,
            1,
            1,
            190,
            115,
            1,
            1,
            1,
            1,
            1,
            1,
            2
        ],
        [
            190,
            190,
            190,
            190,
            190,
            190,
            190,
            190,
            13,
            148,
            148,
            148,
            148,
            148,
            121,
            2
        ],
        [
            1,
            520,
            127,
            127,
            127,
            127,
            127,
            13,
            13,
            148,
            167,
            167,
            167,
            148,
            343,
            1
        ],
        [
            1,
            520,
            127,
            166,
            166,
            166,
            127,
            13,
            13,
            148,
            167,
            167,
            167,
            148,
            343,
            1
        ],
        [
            1,
            520,
            127,
            166,
            166,
            166,
            127,
            13,
            13,
            148,
            148,
            148,
            183,
            148,
            343,
            1
        ],
        [
            1,
            520,
            364,
            174,
            127,
            361,
            127,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            1
        ],
        [
            115,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            13,
            115
        ],
        [
            1,
            514,
            13,
            13,
            394,
            343,
            145,
            220,
            145,
            145,
            145,
            13,
            13,
            13,
            13,
            1
        ],
        [
            1,
            514,
            13,
            13,
            343,
            118,
            145,
            166,
            166,
            166,
            145,
            13,
            13,
            13,
            13,
            1
        ],
        [
            1,
            514,
            514,
            13,
            118,
            118,
            145,
            166,
            166,
            522,
            145,
            13,
            13,
            13,
            13,
            1
        ],
        [
            1,
            1,
            1,
            115,
            1,
            1,
            145,
            145,
            145,
            145,
            145,
            1,
            1,
            1,
            1,
            1
        ]
    ]
}
  

Ответ №3:

Глядя на http://mystikrpg.com/main.txt , элемент items содержит свойства ‘id’, ‘x’ и ‘y’. Нет никакого свойства ‘media’. Это причина, по которой ваш код не работает.

Комментарии:

1. ВЫ ОШИБАЕТЕСЬ — это событие не получает никакого ответа. jsbin.com/ubupov/edit#javascript ,html (нам нужно протестировать его в той же доменной среде)

2. @RoyiNamir: Вы не получите никакого ответа, потому что вы не можете выполнять междоменные вызовы в JavaScript. Но поскольку это тот же домен для OP, он может получить доступ к контенту, и на самом деле нет свойства media. Редактировать: OP, похоже, изменил код, так что это не проблема.

3. @Felix Kling тогда я неправильно понял sry… :)

Ответ №4:

Это в вашем домене или в другом домене? Вы не можете использовать его для другого домена… используйте JSONP

Используйте, jQuery.parseJSON(data) прежде чем разбираться с этим.

 $.each(jQuery.parseJSON(data).items, function(i,item){
  

Комментарии:

1. getJSON неявно устанавливается dataType:"json" , и ответ json анализируется автоматически

2. и вызывающая страница тоже находится в этом домене ?

3. Нет. также я немного изменил код, чтобы отразить идентификаторы и URL-адрес карты

4. вы изменили $.getJSON(«main.txt «, в .js?

5. Почему в .js? Это не .js .. это текстовый файл.