2011-04-03 14 views
7

से जेसन फ़ीड से जुड़ा नहीं होगा। मैं FullCalendar jquery प्लगइन प्राप्त करने में असफल रहा हूं ताकि एक एएसपी.नेट एमवीसी 3 एक्शन से आने वाले जेसन सरणी से जुड़ सकें।फुल कैलेंडर एएसपी.नेट एमवीसी 3 एक्शन

मैंने समस्या से निपटने के लिए कोड से लगभग सब कुछ हटा दिया है;

एक्शन (कैलेंडर नियंत्रक)

public JsonResult Events(double start, double end) 
    { 
     var rows = new object[] { new { title="Event1", start= "2011-04-04" }, 
            new { title="Event2", start= "2011-04-05" } }; 
     return Json(rows, JsonRequestBehavior.AllowGet); 
    } 

देखें

<script type='text/javascript'> 
    $(document).ready(function() { 
    $('#calendar').fullCalendar({ 
     events: '@Url.Content("~/Calendar/Events")' 
    }) 
}); 
: मैं इस, जो हर एसओ और ब्लॉग पोस्ट मैं पढ़ा है, से काम करने के लिए चाहिए के साथ छोड़ दिया हूँ

परिणाम एक खाली कैलेंडर हैं, बिना किसी बाध्य घटनाओं के। मैं सत्यापित किया है कि Json लिया गया जा रहा है:

Json परिणाम

[{"title":"Event1","start":"2011-04-04"},{"title":"Event2","start":"2011-04-05"}] 

और यह ठीक काम करता है:

$(document).ready(function() { 
     $('#calendar').fullCalendar({ 
      events: [{title: 'Event1',start: '2011-04-04'}, 
        {title: 'Event2',start: '2011-04-05'} 
        ]}); 
    }); 

मैं ISO8601 और सहित तिथि प्रारूप (के सभी नंबर का उपयोग कर की कोशिश की है * निक्स टाइमस्टैम्प और एक ही परिणाम प्राप्त हुआ: कोई बाध्य घटना नहीं, बस एक खाली कैलेंडर। अगर मैं $ .ajax त्रुटि जोड़ता हूं: .fullCalendar ऑब्जेक्ट पर फ़ंक्शन, यह आग लगती है, तो शायद जेसन के साथ कुछ वापस आ रहा है - लेकिन यह ठीक लग रहा है मेरे लिए।

मैं फुल कैलेंडर 1.5 का उपयोग कर रहा हूं (हालांकि मैंने 1.4.11 भी कोशिश की), JQuery 1.5.1, JQueryUI 1.8.11।

मैंने जो कुछ भी सोच सकता है उसकी कोशिश की है - किसी भी विचार की बहुत सराहना की जाती है!

+0

मैंने इस मुद्दे को हल किया और पाया - jquery.validate.js के साथ एक फ़ंक्शन नाम टकराव है। –

उत्तर

3

मैंने इस मुद्दे को हल किया और पाया - fullcalendar.js और jquery.validate.js के बीच फ़ंक्शन नाम टक्कर है।

+0

जो काम करता है? क्या आप कृपया अधिक जानकारी प्रदान कर सकते हैं। – Gandarez

+0

नहीं, मुझे याद नहीं है; यह 30 महीने पहले था। यदि यह महत्वपूर्ण है, तो आप कुछ पुराने संस्करण चला सकते हैं? लेकिन समस्या को बाद के संस्करणों द्वारा हल किया गया था, तो समस्या क्या है? –

0

हो सकता है कि बजाय इस की:

return Json(rows, JsonRequestBehavior.AllowGet); 

इस प्रयास करें:

return Json(rows.ToArray(), JsonRequestBehavior.AllowGet); 

या इस के बजाय:

events: '@Url.Content("~/Calendar/Events")' 

इस प्रयास करें:

events: '@Url.Action("Events", "Calendar")' 
+0

धन्यवाद, लेकिन जेएसओएन सही तरीके से वापस किया जा रहा है, इसलिए यूआरएलहेल्पर यूआरएल बनाता है जिस तरह से बदलाव करना कोई फर्क नहीं पड़ता है। और मेरी पंक्तियों पैरामीटर पहले से ही एक सरणी है। समस्या निश्चित रूप से jquery.validate.js है। –

1

$ .ajax() विधि का उपयोग करें।

एक्शन (कैलेंडर नियंत्रक)

public JsonResult Events(string start, string end) 
    { 
     //convert string to date 
     DateTime _start = DateTime.TryParse(start, out _start) ? _start : DateTime.Now.Date; 
     DateTime _end = DateTime.TryParse(end, out _end) ? _end : DateTime.Now.Date; 

     var rows = 
     new object[] { new { title="Event1", start= "2011-04-04" },          
     new { title="Event2", start= "2011-04-05" } }; 
     return Json(rows, JsonRequestBehavior.AllowGet); 
    } 

देखें

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 

    events: function (start, end, callback) { 
     $.ajax({ 
      url: '@Url.Content("~/Calendar/Events")', 
      dataType: 'json', 
      data: { 
       start: start.toLocaleString("yyyy-mm-dd"), 
       end: end.toLocaleString("yyyy-mm-dd") 
      }, 

      success: function (doc) { 
       var events = []; 
       $.each(doc, function (key, val) { 
        events.push({ 
         title: val.title, 
         start: val.start, 
         url: 'http://google.com' 
        }); 
       }); 

       callback(events); 
      } 
     }); 
    } 
    }); 
    }) 

होप्स इस में मदद मिलेगी।

+0

नहीं, समस्या निश्चित रूप से नाम टक्कर थी जिसे हमने पिछले साल खोजा था। AJAX कॉल का विस्तार करने में मदद नहीं मिलेगी - लेकिन jquery.validate.js के एक और हालिया संस्करण का उपयोग करके किया। –

+0

हे। मुझे एक ही समस्या थी। ट्यूटोरियल को छोड़कर मैंने स्ट्रिंग के रूप में नहीं, डबल के रूप में निर्दिष्ट शुरुआत और अंत का पालन किया था। मैंने देखा कि आपके कोड में वे तार थे और मैंने इसे एक शॉट दिया। यह पता चला कि यह सही था, और अब बैकएंड पर मेरे GetEvents कोड को कॉल किया जा रहा है। यहां मामले में पोस्ट करना यह भविष्य में किसी और की मदद करता है। –

संबंधित मुद्दे