Парсинг Действительный JSON с AJAX? - PullRequest
1 голос
/ 13 августа 2011

Привет, я все еще изучаю этот материал JSON ...

Я думаю, что нашел правильный JSON:

http://www.nfl.com/liveupdate/scorestrip/ss.json

Проблема в том, что я не уверен, как я могу разобрать это с помощью AJAX?

Возможно ли это сделать? Я также слышал о MooTools, в чем разница?

Также вот код, который мне нужно просто поиграть, но, похоже, он не работает:

$.ajax({
    type: "GET",
    url: "http://www.nfl.com/liveupdate/scorestrip/ss.json",
    dataType: "json",
    success: function(data) {
        // Interpret response
       for (var i = 0; i < data.gms.length; i++) {
        document.write("Day: " + data.gms[i][0]);
        document.write("<br/>");
        document.write("Time: " + data.gms[i][1]);
        document.write("<br/><br/>");
    }
    }
});

Ответы [ 3 ]

3 голосов
/ 13 августа 2011

JSON означает «нотация объектов JavaScript».AJAX расшифровывается как «Асинхронный Javascript And XML».MooTools - это кроссбраузерная среда javascript, предоставляющая разработчикам объектно-ориентированный рабочий процесс с javascript.

Не путайте яблоки с горохом.Все три технологии часто используются вместе, но это разные вещи.JSON - это нотация для описания объектов, массивов и литералов javascript;AJAX предназначен для запроса и извлечения документов (включая документы в формате JSON), а MooTools может использоваться для выполнения вызовов AJAX (возможно, для получения документа в формате JSON - или фрагмента XML).

JSON - это чистый javascript, тамнет необходимости «разбирать» его каким-либо образом, интерпретатор javascript сделает это за вас.AJAX часто используется для описания запросов XMLHttp: запросы http, исходящие из javascript, часто извлекающие данные JSON или XML / HTML.MooTools позволяет с относительно небольшим кодом использовать функцию XMLHttpRequest через Request класс :

var request = new Request.JSON({
  url: 'http://www.nfl.com/liveupdate/scorestrip/ss.json',

  onRequest: function(){
    alert('We are loading now ...'); // abuse alert(), quite annoying and so 1990
  },

  onComplete: function(jsonObj) {
    // jsonObj is the retrieved JSON. Access it like you would normal javascript objects and arrays
  }

}).send();
2 голосов
/ 13 августа 2011

Я предполагаю, что ваша проблема в том, что вы делаете междоменный запрос, а ваш браузер блокирует это требование. Для обработки ответа json из другого домена вам нужно использовать тип данных jsonp. По сути, это вызов dataType: "jsonp" в вашем запросе ajax.

В соответствии с той же политикой происхождения веб-страница, обслуживаемая сервером server1.example.com, не может нормально подключаться или взаимодействовать с сервером, кроме server1.example.com. Исключением является элемент HTML. Используя преимущества открытой политики для элементов, некоторые страницы используют их для получения кода Javascript, который работает с динамически генерируемыми данными в формате JSON из других источников. Этот шаблон использования известен как JSONP.

Прочитайте об этом. Для получения дополнительной информации ABT JSON в JQuery AJAX: http://api.jquery.com/jQuery.ajax/

ваш обновленный код:

$.ajax({
    type: "GET",
    url: "http://www.nfl.com/liveupdate/scorestrip/ss.json",
    dataType: "jsonp",
    success: function(data) {
        // Interpret response
       for (var i = 0; i < data.gms.length; i++) {
        document.write("Day: " + data.gms[i][0]);
        document.write("<br/>");
        document.write("Time: " + data.gms[i][1]);
        document.write("<br/><br/>");
    }
    }
});

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

1 голос
/ 13 августа 2011

Я бы рекомендовал вам сначала изучить запрос http, что происходит, когда вы запрашиваете данные или получаете данные. Как только вы изучите основы, вы сможете легко запрашивать и получать данные.

HTTP-запрос

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