2013-11-25 10 views
5

मैं सर्वर से JSON पाने के लिए jQuery कोड है:jQuery.getJSON कॉल ASP.NET विधि

$(document).ready(function() { 
      $.getJSON('Default2.aspx/GetPerson', { 'firstname': 'brian', 'lastname': 'lee' }, function (response) { 
       alert(response.Age); 
      });  
     }); 

Default2.aspx कोड:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static String GetPerson(String firstname, String lastname) 
    { 
     Person p = new Person(firstname, lastname); 
     return "{\"Age\":\"12\"}"; 
    } 

सवाल यह है:

क्यों GetPerson विधि मेरी स्क्रिप्ट से नहीं बुलाया जाता है? मैं GetPerson में डीबगर संलग्न करता हूं लेकिन ऐसा लगता है कि इसे नहीं कहा जाता है।

किसी भी मदद की सराहना की जाएगी!

+0

मुझे यकीन है कि यह है कि अगर कारण है, तो आप डेटा के रूप में संपत्ति के नाम पर दे सकता है नहीं कर रहा हूँ। डेटा: {'firstname': 'brian', 'lastname': 'lee'} –

+0

नहीं, यह –

+0

काम नहीं करता है http://stackoverflow.com/questions/16910982/calling-webmethod-returning-ilistt-from- jQuery-ajax-साथ-nhibernate और MVC। मुझे लगता है कि आपको इस पोस्ट के अनुसार webmethod.as से छुटकारा पाने की ज़रूरत है, वेबमाइड्स अप्रचलित हैं –

उत्तर

5

WebMethod एस डिफ़ॉल्ट रूप से अनुरोधों के बजाय POST पर प्रतिक्रिया दें।

$.ajax({ 
    type: 'POST', 
    url: 'Default2.aspx/GetPerson', 
    dataType: 'json', 
    // ... 
}); 

और, अनुरोध प्रारूप से मिलान करने के रूप में अच्छी तरह JSON होना चाहिए ResponseFormat:

// ... 
    data: JSON.stringify({ 'firstname': 'brian', 'lastname': 'lee' }), 
    contentType: 'application/json' 

वैकल्पिक रूप से, एक ScriptMethod बजाय GET उपयोग करने के लिए विन्यस्त किया जा सकता:

[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] 

हालांकि, contentType अभी भी इसके लिए सेट करने की आवश्यकता है , इसलिए $.getJSON() इस्तेमाल किया नहीं किया जा सकता:

$.ajax({ 
    type: 'GET', 
    url: 'Default2.aspx/GetPerson', 
    dataType: 'json', 
    contentType: 'application/json', 
    // ... 
}); 

और, data URL- एनकोडेड होगा, लेकिन प्रत्येक मान होने की आवश्यकता होगी कि इससे पहले कि JSON एन्कोड:

// ... 
    data: { 
     firstname: JSON.stringify('brian'), 
     lastname: JSON.stringify('lee') 
    } 

यह भी ध्यान रखें ScriptMethod एस { "d": ... } ऑब्जेक्ट में अपनी प्रतिक्रिया लपेटेंगे। और, के बाद से return मूल्य एक String है, "d" का मूल्य है कि एक ही अन-पार्स String हो:

// ... 
    success: function (response) { 
     response = JSON.parse(response.d); 
     alert(response.Age); 
    } 
+0

आपने कहा कि डिफ़ॉल्ट रूप से वेबमाइंड्स जीईटी अनुरोधों के बजाय POST का जवाब देते हैं। । तो मैं WebMethod को GET को कैसे प्रतिसाद दे सकता हूं? –

+0

@IswantoSan यह संभव है, हालांकि कुछ चेतावनी के साथ। मेरा संपादन देखें। –

+0

आपको बहुत बहुत धन्यवाद! –

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