完整日历选择:回调Javascript错误

时间:2017-05-15 09:14:55

标签: javascript jquery ajax fullcalendar

我目前正在尝试将fullcalendar集成到我正在处理的项目中。我遇到了一些错误:select:回调在尝试提交ajax请求时产生错误。我的选择:回调如下所示:

        select: function(start, end, allDay){
            var title = prompt('Event Title: ');
            if(title) {
                var start = jQuery.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss");
                var end = jQuery.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss");
                $.ajax({
                    url: '/wp-admin/admin-ajax.php',
                    data: {
                        action: 'add_itinerary_event',
                        JSToken: jQuery("#JSToken").val(),
                        GuestID: jQuery("#GuestID").val(),
                        Title: title,
                        Start: start,
                        End: end,
                        AllDay: allDay
                    },
                    type: 'post',
                    success: function(json){
                        alert('Added Successfully');
                    }
                });
                itinerarycalendar.fullCalendar('renderEvent', {
                    title: title,
                    start: start,
                    end: end,
                    allDay: allDay
                    },
                    true);
            }
            itinerarycalendar.fullCalendar('unselect');
        },

通过选择时间段向日历添加活动时,Chrome中的控制台会记录以下内容:

jquery-1.12.0.js?ver=4.7.4:4 Uncaught TypeError: Illegal invocation
at e (jquery-1.12.0.js?ver=4.7.4:4)
at cc (jquery-1.12.0.js?ver=4.7.4:4)
at cc (jquery-1.12.0.js?ver=4.7.4:4)
at cc (jquery-1.12.0.js?ver=4.7.4:4)
at cc (jquery-1.12.0.js?ver=4.7.4:4)
at cc (jquery-1.12.0.js?ver=4.7.4:4)
at Function.n.param (jquery-1.12.0.js?ver=4.7.4:4)
at Function.ajax (jquery-1.12.0.js?ver=4.7.4:4)
at Et.function.e.constructor.select (fitbscripts.js?ver=4.7.4:76)
at constructor.publiclyTrigger (fullcalendar.min.js?ver=4.7.4:9)

单击fitbscripts.js(我的代码的位置)指向$ .ajax行,但不提供任何进一步的信息。

在Safari中,提供了以下信息:

[Error] TypeError: Can only call HTMLElement.click on instances of HTMLElement
click (jquery-1.12.0.js:4:24813)
e (jquery-1.12.0.js:4:24813)
cc (jquery-1.12.0.js:4:24698)
cc (jquery-1.12.0.js:4:24722)
cc (jquery-1.12.0.js:4:24722)
cc (jquery-1.12.0.js:4:24722)
param (jquery-1.12.0.js:4:25060)
ajax (jquery-1.12.0.js:4:20919)
select (fitbscripts.js:76)
publiclyTrigger (fullcalendar.min.js:9:16488)
publiclyTrigger (fullcalendar.min.js:8:30679)
triggerSelect (fullcalendar.min.js:9:8211)
reportSelection (fullcalendar.min.js:9:8156)
interactionEnd (fullcalendar.min.js:7:19556)
trigger (fullcalendar.min.js:7:7856)
handleInteractionEnd (fullcalendar.min.js:7:6113)
handleInteractionEnd (fullcalendar.min.js:7:11377)
endInteraction (fullcalendar.min.js:7:6045)
d (jquery-1.12.0.js:2:3862)
n (fullcalendar.min.js:6:31915)
dispatch (jquery-1.12.0.js:3:12350)
handle (jquery-1.12.0.js:3:9077)
trigger (jquery-1.12.0.js:3:11477)
triggerHandler (jquery-1.12.0.js:3:18984)
trigger (fullcalendar.min.js:7:145)
handleMouseUp (fullcalendar.min.js:7:13137)
d (jquery-1.12.0.js:2:3862)
dispatch (jquery-1.12.0.js:3:12350)
handle (jquery-1.12.0.js:3:9077)

有谁知道可能导致这种情况的原因?我似乎想绕圈子试图找出这里发生的事情。

1 个答案:

答案 0 :(得分:0)

我能够通过使用原生JS ajax来解决这个问题:

$.ajax({
  url: '/wp-admin/admin-ajax.php',
  data: {
    action: 'add_itinerary_event',
    JSToken: 'xyz'
  },
  type: 'post',
  success: function(json){
    alert('Added Successfully');
  }
});

......变成......

var xhr = new XMLHttpRequest();
xhr.open('POST', '/wp-admin/admin-ajax.php');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader("X-CSRFToken", csrftoken); // if needed
xhr.onload = function() {
  if (xhr.status === 200) {
    alert('Added Successfully: ', JSON.parse(xhr.responseText));
  }
};
xhr.send(JSON.stringify({
  action: 'add_itinerary_event',
  JSToken: 'xyz'
}));

我知道这只是一种解决方法,但它帮助我推进了fullcalendar。