2013-01-18 21 views
10

के साथ select2 मैं AJAX लोडिंग के साथ select2 का उपयोग करने का प्रयास कर रहा हूं।AJAX पोस्ट विधि

यहाँ मेरी कोड है:

clonedTemplate.find('[id^=detailsPhaseFinanceMinor_]').select2({ 
    placeholder: "Select", 
    minimumInputLength: 1, 
    ajax: { // instead of writing the function to execute the request we use Select2's convenient helper 
     type: 'POST', 
     contentType: "application/json; charset=utf-8", 
     url: "mapBasic.aspx/GetFinSys", 
     dataType: 'json', 
     data: function (term, page) { 
      return "{'term':\"" + term + "\"}"; 
     }, 
     results: function (data, page) { // parse the results into the format expected by Select2. 
      // since we are using custom formatting functions we do not need to alter remote JSON data 
      return { results: data.Value }; 
     } 
    } 
}); 

ajax कॉल एक ही पृष्ठ का कोड-पीछे में एक webmethod/pagemethod के लिए है:

[WebMethod] 
    public static List<LookupCodeItem> GetFinSys(string term) 
    { 
     string stringToCompareTo = term.ToLower(); 

     List<LookupCodeItem> result = new List<LookupCodeItem>(); 


     // FIN SYS 
     using (mapEntities db = new mapEntities()) 
     { 
      List<MPO_FINSYS_AMT> finSysCodes = (from x in db.MPO_FINSYS_AMT 
               select x).ToList(); 

      foreach (MPO_FINSYS_AMT item in finSysCodes) 
      { 
       string valKey = string.Format("{0}.{1}.{2}", item.FY, item.MDOT_MPO_CD, item.FIN_SYS); 
       LookupCodeItem x = new LookupCodeItem(); 
       x.Value = valKey; 
       x.ShortDescription = string.Format("{0}.{1}.{2}", item.FY, item.MDOT_MPO_CD, item.FIN_SYS); ; 
       x.LongDescription = string.Empty; 
       result.Add(x); 

      } 
     } 

     return result; 
    } 

जब टेक्स्ट बॉक्स में डेटा दर्ज करने, POST अनुरोध किया गया है, और जेसन भेजता है ठीक से स्वरूपित प्रतीत होता है।

हालांकि, पृष्ठ विधि से प्रतिक्रिया संपूर्ण HTML पृष्ठ है। यह मेरी समझ है कि यह पोस्ट विधियों के साथ हो सकता है यदि आपके पास AJAX कॉल में "सामग्री टाइप" ठीक से सेट नहीं है। मैंने इसे अपने सभी अन्य AJAX कॉल के समान सेट किया है जो पृष्ठ पर काम करते हैं (वे चयन 2 का उपयोग नहीं कर रहे हैं)।

क्या 2 "सामग्री टाइप" विशेषता को अनदेखा करता है? या क्या मैंने कुछ और गलत तरीके से किया है?

** संपादित करें ** इस पोस्ट करने के बाद, मैं इस मुद्दे Select2 के GitHub स्थल पर सूचीबद्ध पाया: Issue 492 - Add Support for contentType to Ajax

ऐसा लगता है कि यह contentType में नहीं होता है। क्या मैं AJAX सहायक में निर्मित selet2 को बाईपास करने और अपने मैन्युअल रूप से परिभाषित एक का उपयोग करने में सक्षम हूं?

उत्तर

-5

मैं [webmethod] की बजाय आपके डेटा कॉल के लिए WebApi या ServiceStack का उपयोग करने का सुझाव दूंगा।

+0

यह एक सिफारिश है जिसे टिप्पणियों पर रखा जाना चाहिए, जवाब में नहीं। साथ ही, प्रोग्रामिंग तकनीकों को बदलने से ओपी की मदद कैसे होगी? – ilter

+0

पोस्टर को ठीक करने के लिए एक आसान सुझाव/समर्थित तरीका प्राप्त करने का प्रयास कर रहा था। यह देखकर 7 महीने पहले किया गया था, अब मैं इसके बारे में इतना कुछ नहीं कर सकता! :-) –

3

मैं था एक ही समस्या है और समाधान नीचे मेरे लिए काम करता:

ajax: { 
    ... 
    params: { // extra parameters that will be passed to ajax 
     contentType: "application/json; charset=utf-8", 
    } 
    ... 
} 
1

अपनी पोस्ट अनुरोध करने के लिए CSRF टोकन जोड़ने के लिए मत भूलना। ऐसा हो सकता है कि आप क्लाइंट साइड पर सबकुछ सही करें, लेकिन सर्वर अनुरोध से इंकार कर देता है, क्योंकि यह टोकन गुम है। अधिक जानकारी के लिए PHP Laravel फ्रेमवर्क के लिए उदाहरण के लिए देखें: https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token