2015-04-01 5 views
-1

Мне, к сожалению, требуется поддержка IE8, и я не могу получить простой простой запрос $.getJSON.

Вот код:

url = "http://www.somejson.com/data.json"; 
$.getJSON(url, function(data) { 
    var funds = []; var benchmarks = []; 
    funds.push(data.funds); benchmarks.push(data.benchmarks); 

    $.each(data.funds, function(key, value) { 

     var ticker = key; 

     // Monthly: 
     var appendToDaily = function(ticker) { 
      $.each($("#"+ticker), function(key, value, index) { 
       $(this).children("td").filter(":nth-child(1)").html('<td>'+funds[0][ticker].name+'</td>'); 
       $(this).children("td").filter(":nth-child(2)").html('<td>'+ticker+'</td>'); 
       $(this).children("td").filter(":nth-child(3)").html('<td>'+funds[0][ticker].fund.inception_date+'</td>'); 
      }); 
     }; 

     appendToDaily(ticker); 

    }); 

}); 

Этот код прекрасно работает в Chrome, Firefox и IE9 +.

Я попробовал несколько вещей, чтобы исправить это без успеха:

  • Я пытался использовать метод $.ajax вместо этого.
  • Задайте заголовок для данных JSON: response.setContentType("text/javascript; charset=UTF-8"); как предложено here.
  • Добавил этот фрагмент перед $.getJSON: $.ajaxSetup({ cache: false });, а затем сбросьте его до истины непосредственно перед завершением вызова, как предложено here.
  • Я в явном виде включил json2.js на всякий случай.
  • Вернулся в JQuery 1.11.0.min.js на всякий случай.

Когда я пытаюсь запустить этот код, я получаю несколько ошибок, говорящих, что «фонд» и «фонды» не определены. Я также замечаю, что абсолютно ничего внутри функции обратного вызова $.getJSON не срабатывает; даже alert() игнорируется.

Я как бы нахожусь здесь, поэтому любые предложения будут очень благодарны! Заранее спасибо.

+0

Проверьте, включен ли Javascript в IE8 или другие параметры безопасности, что предотвращает запуск сценария - https://support.microsoft.com/en-us/gp/howtoscript – Tasos

+0

Hrm, похоже, что JS включен; проблем нет. Однако хорошая мысль, я уверен, что это будет что-то маленькое и легко пропустить. -_- – Taj

+0

Шаг 1: выяснить, почему он не работает. Посмотрите на свою консоль, даже IE8 имеет ее. Знайте, в чем проблема, прежде чем начинать попытки слепо «исправить» ее. –

ответ

0

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

$.getJSON('http://...') 
    .done(function(response) { console.log('complete'); }) 
    .fail(function(error) { console.log('error'); }); 

Если консоль выдает «ошибку», вы можете работать оттуда. Вы можете либо отлаживать, либо выводить результат ошибки на консоль.

+0

'.error' неверен, вы должны использовать' .fail'. '.success' и' .error' устарели в 1.8 –

+0

Кроме того, в обратном вызове ошибки вы также должны регистрировать 2-й и 3-й аргументы. это текстовое состояние и сообщение об ошибке, сгенерированное jquery. –

+0

Спасибо, Кевин Б, ты абсолютно прав. Я работаю над проектом, который все еще находится на jQuery 1.7 в течение последних 3 месяцев, и «ошибка» была только на мой взгляд. –

Смежные вопросы