Полный календарь jQuery не отображает события в IE

#javascript #jquery #ajax #json #fullcalendar

#javascript #jquery #ajax #json #полный календарь

Вопрос:

Как следует из названия, он не отображает события ни в одной версии IE.

Использование IE с 7 по 10, и ни одна из версий не отображает событие. Jquery 1.11.0 и полный календарь 1.6.4.

Если я вручную добавляю события, это работает отлично, но с событиями, которые я извлекаю из моего вызова ajax, он вообще не будет отображать никаких событий, все другие браузеры отображают их без проблем.

Я получаю свои события из вызова ajax, которые затем анализирую в массив объектов JSON. Необработанные данные, полученные от моего вызова, выглядят следующим образом:

 [
  [
    {
      "start": "2014,05,01",
      "title": "Event test 2",
      "content": "Avec du texte pour en mettre plus",
      "ID": 153
    }
  ],
  [
    {
      "start": "2014,04,16",
      "title": "Event test",
      "content": "<p>Du texte pour le premier événement.</p>",
      "ID": 118
    }
  ],
  [
    {
      "start": "2014,04,10",
      "title": "Event test",
      "content": "<p>Du texte pour le premier événement.</p>",
      "ID": 118
    }
  ]
]
 

После этого я выполняю цикл в массиве 2-х измерений для извлечения каждого отдельного объекта и помещаю его в другой массив, код, который делает это:

 for(var i = 0; i < jsonData.length; i  ){           
  for(var k = 0; k < jsonData[i].length; k  ){
    dataEvents.push(jsonData[i][k]);
  }
}
 

Теперь, если я просто жестко закодирую массив вышеупомянутых объектов JSON вручную в свойство events FullCalendar, это сработает, почему это не сработает, если это массив, созданный циклом?

IE не показывает ошибок, ни один файл не загружается (или загружается дважды). Я потратил несколько часов на изучение аналогичного вопроса (конечные запятые, по-видимому, являются наиболее распространенной ошибкой), но ничего, что конкретно помогло мне, кроме как изолировать проблему.

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

Редактировать: добавлены версии.

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

1. Какая версия IE, jquery, fullcalendar?

2. Отредактировано для добавления версий. IE с 7 по 10, jQuery 1.11.0 и полный календарь 1.6.4.

Ответ №1:

Немного повозившись с этим, мне удалось заставить его работать. В итоге я изменил несколько вещей. Во-первых, изменил формат строки, чтобы использовать тире «-» вместо запятых, поэтому новый объект JSON выглядел следующим образом:

 [
  [
    {
      "start": "2014-05-01",
      "title": "Event test 2",
      "content": "Avec du texte pour en mettre plus",
      "ID": 153
    }
  ],
  [
    {
      "start": "2014-04-16",
      "title": "Event test",
      "content": "<p>Du texte pour le premier événement.</p>",
      "ID": 118
    }
  ]
]
 

А затем изменил способ построения моих объектов, которые передавались в FullCalendar:

     for(var i = 0; i < jsonData.length; i  ){           
        for(var k = 0; k < jsonData[i].length; k  ){
            /* creating date object instead of string */
            var d = new Date(jsonData[i][k]['start']);

            /* adding one day, it was showing the previous day (due to localisation?) */
            d.setDate( d.getDate()   1);

            /* manually setting the object, and adding 'allDay':true , in my case I need them to be all day events */
            dataEvents.push({
                        'start' : d,
                        'title' : jsonData[i][k]['title'],
                        'content' : jsonData[i][k]['content'],
                        'ID' : jsonData[i][k]['ID'],
                        'allDay' : true
                    });
        }

    }
 

После этого все работало нормально. Я думаю, IE не может интерпретировать строки на сегодняшний день так же, как это делают другие браузеры. Кстати, safari показывал те же результаты, что и IE, события не отображались, после этого изменения все отображается правильно во всех браузерах mayor.

Я опубликую ссылку на рабочую страницу, как только она будет запущена (в настоящее время она находится на наших частных серверах prod, но в ближайшее время ее следует перенести на действующие серверы).