2013-08-06 3 views
1

В настоящее время я работаю с большим плагином Jquery - Fullcalendar, но я столкнулся с проблемой. Я использую прослушиватель eventDrop, и я хочу отправить информацию о событиях с помощью Ajax на сервер.Fullcalendar Event drop и 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"); 
        } 
       }); 
} 

Моя проблема заключается в том, что, как только я пытаюсь отправить любую переменную, содержащуюся в объекте события, он не работает. Например, отправка только дняДельта на серверную часть работает, но ни одно из event.something не делает.

Если кто-то наткнулся на эту проблему раньше или, если у вас есть какие-либо идеи, что может вызвать проблему, сообщите мне.

+0

Ваш код должен работать безупречно. 'Пожалуйста, проверьте консоль, что ваше event.something имеет свои значения. 'Вы можете кэшировать event.something для переменных, а затем использовать эту переменную для передачи в качестве объекта данных. – thecodeparadox

+0

Я предупредил каждое значение, и все они хороши, но когда они достигли моего сервера, они равны нулю. – vegas2033

+0

Вы просматривали сетевые запросы, используя devtools вашего браузера или используя Fiddler или подобное? –

ответ

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"); 
        } 
       }); 

Это уродливое и трудоемкое, но по крайней мере оно работает. У меня есть другие приоритеты для работы, но если у вас есть какие-либо сведения об этой проблеме, пожалуйста, дайте мне знать.

Спасибо, Грег

1

Позднего ответ, но я мастерил похожую проблему ни с чем послан на сервер. Пробовал все, кэширование, а также использование jquery для расширения и копирования объекта.

То, что сработало для меня, смотрело на заголовки, для запроса. У них всегда были данные.

Я закончил с этим кодом serveride. Не то, что я хочу, но, возможно, это поможет кому-то, кто пытается решить ту же проблему!

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 
     }); 
    }