$ .getJSON () работает в IE9, но не в Chrome и FireFox, что не так в моем коде? - PullRequest
3 голосов
/ 04 декабря 2011

Я разработал веб-приложение с использованием IE9 и текстового редактора. Он читает файл JSON, а затем заполняет некоторые элементы DIV в соответствии с этим файлом и логикой кода JavaScript и jQuery. Под IE9 работает отлично.

В Chrome он не может выполнить инструкцию $ .getJSON (), поэтому данные недоступны. Под FireFox, очевидно, выполняется оператор $ .getJSON () (об этом свидетельствуют предупреждающие сообщения), но он ничего не читает.

Файл JSON передает JSONLint.

Ни Chrome, ни FireFox не указывают на ошибки.

Я создал файл примера с использованием данных JSON с сайта JSON, проверил его с помощью JSONLint, а затем запустил свой код, используя этот файл. Нет разницы - Chrome все еще игнорирует оператор $ .getJSON ().

Соответствующий раздел моего кода:

    function buildTree(centralID) {
      alert("Can we start, at least?");
     $.getJSON('sample.json', function(data) {
      alert("first success");
      $.each(data.person, function(i, xdata) {

Chrome отображает первое предупреждение, но не второе.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2011

Вы можете использовать встроенную функцию ошибок для отображения ошибки и ее отладки.

$(document).ready(function(){ // Make sure your jQuery is inside this
$.getJSON("sample.json", function(data) {
    alert('Point 1 Reached.');
    console.log(data); // Here we log to our console
    $.each(data.feed.entry, function(i, item) {
             // Do your stuff here
        }); // End of $.each

// Here Success, Completed & Error do something. chained onto $.getJSON
        }).success(function() { alert("success"); })
          .error(function(jqXHR, textStatus, errorThrown) { // Debug the error!!
                    console.log("error " + textStatus);
                    console.log("error throw " + errorThrown);
                    console.log("incoming Text " + jqXHR.responseText);
                }) // End of .error
          .complete(function() { alert("complete"); });
        });
}); // End of DOM Ready

Это должно показать вам ошибку в окне консоли Firefox или Chrome (console.log не будет работать в IE и сломать скрипт). Чтобы открыть окно консоли в Firefox или Chrome, нажмите F12. Если JSON не работает, он покажет ошибку, которую вы можете отладить.


Обновление
Также убедитесь, что этот код находится в вашем $(document).ready(). $ .GetJSON () может вызвать непредвиденное поведение в разных браузерах, если его использовать иным образом.

2 голосов
/ 04 декабря 2011

Это работает на веб-сервере или вы просто открываете файл в браузере? Если вы просто открываете файл, у вас будут проблемы.

...