2010-08-17 12 views
7

में Request.IsAjaxRequest को ट्रिगर नहीं कर रहा है। मैं jquery पूर्ण कैलेंडर प्लगइन का उपयोग कर रहा हूं, और मैं किसी ईवेंट पर क्लिक करने और ईवेंट के विवरण AJAX के माध्यम से पॉप्युलेट करने में सक्षम होना चाहता हूं # विवरण की आईडी के साथ एक div में।jQuery.Load() ASP.NET MVC2

यहां मेरा नियंत्रक क्रिया है जिसे मैं लोड करने की कोशिश कर रहा हूं। डीबगिंग करते समय, कार्रवाई आने वाले अनुरोध को AJAX होने पर विचार नहीं करती है और आंशिक के बजाय पूर्ण दृश्य देता है। क्या इससे कोई फर्क पड़ता है कि पूर्ण दृश्य को आंशिक दृश्य के समान कहा जाता है? अर्थात; 'Details.aspx' & 'विवरण.स्कैक्स'?

public ActionResult Details(int id) 
    { 
     Pol_Event pol_Event = eventRepo.GetEvent(id); 
     ViewData["EventTypes"] = et.GetEventType(id); 
     if (pol_Event == null) 
      return View("NotFound"); 
     else 
     { 
      if(HttpContext.Request.IsAjaxRequest()){ 
       return PartialView("Details"); 
      } 
      else 
       return View(pol_Event); 

     } 
    } 

यहाँ jQuery कोड मैं का उपयोग कर रहा है। क्या मैं eventClick फ़ंक्शन में सही ढंग से .load() का उपयोग नहीं कर रहा हूं? कैलेंडर प्लगइन के डेवलपर ने पुष्टि की है कि eventClick के पास AJAX से कोई लेना देना नहीं है, इसलिए गलती मेरे कोड में झूठ बोलनी चाहिए।

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

       header: { 
        left: 'prev,next today', 
        center: 'title', 
        right: 'month,agendaWeek,agendaDay' 
       }, 

       events: "/Events/CalendarData", 
       allDayDefault: false, 

       selectable: true, 
       eventClick: function(event) { 
        $('details').load(event.url); 
       }, 
       eventRender: function(event, element) { 
        element.qtip({ 
         content: event.title + " @ " + event.venue, 

         position: { 
          corner: { 
           target: 'topLeft', 
           tooltip: 'bottomLeft' 
          } 
         } 

        }); 
       } 


      }); 

     }); 

तो मैं गलत तरीके से Jquery.Load() फ़ंक्शन का उपयोग कर रहा हूँ, या वहाँ कुछ मेरी नियंत्रक के साथ गलत क्या है?

अधिक अपडेट: आखिरकार मैंने समस्या को पकड़ा। XMLHttpRequest भेजा जा रहा है लेकिन मुझे 500 आंतरिक सर्वर त्रुटि का सामना करना पड़ रहा है, हल नहीं हुआ है क्योंकि मैं यह नहीं समझ सकता कि त्रुटि क्या हो रही है।

Host: localhost:4296 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 
Firefox/3.6.8 
Accept: text/html, */* 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
X-Requested-With: XMLHttpRequest 
Referer: http://localhost:4296/Events/EventCalendar 
Cookie: .ASPXAUTH=56C5F4FD536564FF684F3F00E9FB51A5F2F1B22D566C517923D71FEAF599D266531CAC52BF49D2700E048DD420A4575456855303CC2DCB5875D4E1AD8883821EA62E5169969503776C78EB3685DAA48C 

अपडेट: आखिरकार मुझे पता चला कि समस्या क्या थी। मैं लाइन

return PartialView("Details"); 

तो आंशिक करने के लिए मॉडल में गुजर नहीं किया गया था

return PartialView("Details", pol_Event); 

इस 500 आंतरिक सेवा त्रुटि पैदा किया गया था किया जाना चाहिए था।

+0

का सारांश प्रस्तुत IsAjaxRequest() काम करता है: http://bit.ly/bXq32v – BritishDeveloper

उत्तर

5

आप एक Ajax अनुरोध आप की तरह 'XMLHttpRequest' जैसे कुछ करने के लिए शीर्ष लेख 'एक्स-अनुरोधित-साथ के HTTP स्थापित करने के लिए लगता है कि कर रहे हैं जब।

Host    www.google.com 
User-Agent   Mozilla/5.0 (Windows; U; Windows NT 6.1; (snip...) 
Accept    */* 
Accept-Language  en-us,en;q=0.5 
Accept-Encoding  gzip,deflate 
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive   115 
Connection   keep-alive 
X-Requested-With XMLHttpRequest 
Referer    http://www.google.com 

यह 'एक्स-अनुरोधित-साथ' शीर्षक क्या 'IsAjaxRequest()' विधि के लिए दिखता है। आम तौर पर, jQuery की अजाक्स विधियां स्वचालित रूप से इस शीर्षलेख को भेजेंगे। मेरा अनुमान है कि किसी कारण से jQuery कैलेंडर प्लगइन इस हेडर को नहीं भेज रहा है।

मैं fiddler जैसे कुछ डाउनलोड करूंगा, या Firebug for Firefox इंस्टॉल कर सकता हूं और अजाक्स अनुरोध/कैलेंडर नियंत्रण निकाल दिया/प्रारंभ किया गया है, तो कच्चे HTTP अनुरोध/प्रतिक्रिया डेटा की जांच करें। देखें कि एक्स-अनुरोधित-साथ हेडर शामिल किया जा रहा है या नहीं।

+0

बहुत धन्यवाद, मैं प्लगइन के डेवलपर को एक मेल – MrBliz

3

हां। हालांकि इसे एक HTTP अनुरोध शीर्षलेख के रूप में नहीं भेजा जाना है। आप इसे किसी फॉर्म डेटा या जीईटी की क्वेरी स्ट्रिंग में पोस्ट कर सकते हैं। www.example.com?x-requested-with=XMLHttpRequest (केस संवेदनशील मूल्य)

हास्यास्पद लेकिन सच लगता है। मैं यह कोशिश की है और यह IsAjaxRequest() विस्तार विधि पर काम करता है :) प्रतिबिंब यह साबित होगा:

return ((request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (request.Headers["X-Requested-With"] == "XMLHttpRequest"))); 
+0

आपकी प्रतिक्रिया के लिए बहुत धन्यवाद, और अतिरिक्त अंतर्दृष्टि – MrBliz

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