2013-01-22 2 views
7

मैं अपने नियंत्रक से एक जेसन परिणाम वापस करने की कोशिश कर रहा हूं और jQuery का उपयोग करके एक चयन सूची पॉप्युलेट कर रहा हूं। लेकिन कोड ने मेरे नियंत्रक में जेसन विधि को भी हिट नहीं किया।जेसन वापस करने और चयन सूची को पॉप्युलेट करने का प्रयास

मेरे selectList

<select id="MyList"></select> 

मेरे जावास्क्रिप्ट

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.getJSON("@Url.Action("GetProductJson", "Product")", null, function (data) { 
      $("#MyList").addItems(data); 
     }); 
    }); 

    $.fn.addItems = function (data) { 
     return this.each(function() { 
      var list = this; 
      $.each(data, function (index, itemData) { 
       var option = new Option(itemData.Text, itemData.Value); 
       list.add(option); 
      }); 
     }); 
    }; 
</script> 

ProductController

[HttpGet] 
public JsonResult GetProductJson() 
{ 
    var list = new List<SelectListItem> 
      { 
       new SelectListItem { Value = "1", Text = "Aron" }, 
       new SelectListItem { Value = "2", Text = "Bob" }, 
       new SelectListItem { Value = "3", Text = "Charlie" }, 
       new SelectListItem { Value = "4", Text = "David" } 
      }; 

    return Json(list); 
} 

उत्तर

1

आप JsonHijacking

डिफ़ॉल्ट रूप से, ASP.NET MVC ढांचे आप के साथ एक HTTP GET अनुरोध का जवाब देने की अनुमति नहीं है फिल Haack पोस्ट से अपना json विधि

में JsonRequestBehavior.AllowGet जोड़ने की जरूरत एक JSON पेलोड। यदि आपको GET को प्रतिक्रिया में JSON भेजने की आवश्यकता है, तो आपको JsonRequestBehavior.AllowGet को Json विधि के दूसरे पैरामीटर के रूप में उपयोग करने के लिए व्यवहार को द्वारा स्पष्ट रूप से अनुमति देने की आवश्यकता होगी। हालांकि, एक मौका है कि एक दुर्भावनापूर्ण उपयोगकर्ता जेएसओएन हाइजैकिंग नामक प्रक्रिया के माध्यम से JSON पेलोड तक पहुंच प्राप्त कर सकता है। आप किसी GET अनुरोध में JSON का उपयोग करके संवेदनशील जानकारी वापस नहीं करना चाहते हैं।

6

में मेरे Json विधि आप प्राप्त अनुरोधों जो डिफ़ॉल्ट रूप से अक्षम के लिए JSON सक्षम होना चाहिए। यह Json पद्धति के लिए एक दूसरा तर्क पास करके होता है:

return Json(list, JsonRequestBehavior.AllowGet); 

अब आगे जाना है और FireBug स्थापित करें। यदि आपने StackOverflow पर इस प्रश्न को पोस्ट करने से पहले ऐसा किया था तो आप अपने ब्राउज़र में AJAX अनुरोध का निरीक्षण कर सकते थे और यह देख सकता था कि सर्वर 500 स्थिति कोड देता है और जब आपने प्रतिक्रिया का निरीक्षण किया तो आपको सटीक त्रुटि संदेश दिखाई देगा और न केवल कि - आप इसे ठीक करने के तरीके पर एक सुझाव भी देखेंगे। सुझाव मूल रूप से मैंने अपने उत्तर में यहां पोस्ट किया है। इस प्रकार आपको अपने प्रश्न को पोस्ट करने की आवश्यकता भी नहीं थी क्योंकि आप इसे स्वयं हल कर पाएंगे। मैं संभवतः कल्पना नहीं कर सकता कि लोग फ़ायरबग या क्रोम डेवलपर टूल्स जैसे टूल के बिना वेब विकास कर रहे हैं। यह अपने घरों के बिना और किसी भी उपकरण के बिना घर बनाने की कोशिश कर रहा है।

+1

क्रोम डेवलपर टूल के लिए +1 और इसे सुझाव देने के लिए –

+0

क्या उनके प्रश्न का स्क्रिप्ट फ़ंक्शन "addItems" सच है? –

+1

धन्यवाद! मैंने अब क्रोम डेवलपर टूल्स इंस्टॉल किए हैं। –

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

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