jQuery Fullcalendar不在IE中呈现事件

时间:2014-06-26 16:33:42

标签: javascript jquery ajax json fullcalendar

正如标题所说,它不会在任何版本的IE上呈现事件。

使用7到10的IE,没有任何版本呈现该事件。 Jquery 1.11.0和fullCalendar 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对象的数组硬编码到fullCalendar的events属性中,那么为什么它在循环创建的数组时不起作用?

IE显示没有错误,没有文件没有加载(或加载两次)。我花了好几个小时研究类似的问题(尾随逗号似乎是最常见的错误)但除了隔离问题之外没有什么特别帮助我。

谢谢,我希望你们能帮助我和其他可能会遇到同样问题解决它的人。

编辑:添加版本。

1 个答案:

答案 0 :(得分:0)

在干预了一下之后,我设法让它运转起来。我最后改变了一些事情。首先,将字符串格式更改为使用破折号“ - ”而不是逗号,因此新的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相同的结果,它没有显示事件,在此更改后,所有市长浏览器中的所有内容都正常显示。

我会在工作页面上线后发布一个链接(目前存在于我们的私有prod服务器中,但它应该很快迁移到实时服务器)。