1

我目前正在使用出色的 Jquery 插件 - Fullcalendar,但我遇到了问题。我使用 eventDrop 侦听器,我想使用 Ajax 将事件信息发送到我的服务器端。

我的代码如下:

eventDrop: function (event, dayDelta) {

                $.ajax({
                    url: ("/PSAdmin/RFCalendar/DragEvent"),
                    data: ({
                        type: event.className,
                        delta: dayDelta,
                        newDate: event.start,
                        newTitle: event.title
                    }),
                    type: "POST",
                    success: function (data) {
                        $('#calendar').empty();
                        loadCalendar();
                    },
                    error: function (xhr, status, error) {
                        alert("fail");
                    }
                });
}

我的问题是,一旦我尝试将包含的任何变量发送到事件对象中,它就不起作用。例如,仅将 dayDelta 发送到服务器端有效,但 event.something 没有。

如果有人之前偶然发现了这个问题,或者如果您知道可能导致问题的原因,请告诉我。

4

2 回答 2

1

迟到的答案,但我遇到了一个类似的问题,没有任何东西发送到服务器。尝试了一切,缓存以及使用 jquery 扩展和复制对象。

对我有用的是查看请求的标题。他们似乎总是有数据。

我最终得到了这个代码服务器端。不是我想要的,但它可能会帮助试图解决同样问题的人!

C#

[HttpGet]
    public void UpdateOrderData(object orderObj)
    {
        var obj = new
        {
            start = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["orderObj[start]"]),
            end = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["orderObj[end]"]),
            date = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["orderObj[date]"]),
            resourceId = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["orderObj[resourceId]"]),
            orderId = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.QueryString["orderObj[orderId]"]),
        };

        calendarUnitOfWork.CustomDataRepository.UpdateOrderData(obj);
    }

Javascript

 myModel.eventDrop = function(event, delta, revertFunc, jsEvent, ui, view ) 
 {
     calUOW.orderrepository.updateOrderData({
            start: event.start.format(),
            end: event.end.format(),
            date: event.start.format("YYYY-MM-DD"),
            resourceId: event.resourceId,
            orderId: event.orderId
        });
  }
于 2015-04-23T09:32:47.370 回答
1

所以不幸的是,我无法弄清楚为什么 ajax 查询不能正常工作,我不得不做我最初不想做的事情。

if (event.className == "holiday") {
                    var className = "holiday";
                }

                //build date
                var date = event.start.getMonth()+1 + "/" + event.start.getDate() + "/" + event.start.getFullYear();
                alert(date);

                $.ajax({
                    url: ("/PSAdmin/RFCalendar/DragEvent/"),
                    data: ({
                        className: className,
                        delta: dayDelta,
                        newDate: date,
                        newTitle: event.title
                    }),
                    type: "POST",
                    success: function (data) {
                        $('#calendar').empty();
                        loadCalendar();
                    },
                    error: function (xhr, status, error) {
                        alert("fail");
                    }
                });

这既丑陋又耗时,但至少它有效。我还有其他优先事项要处理,但如果您对这个问题有任何线索,请告诉我。

谢谢,格雷格

于 2013-08-07T13:07:09.940 回答