2012-11-15 10 views
5

यहां कुछ jquery/js और कुछ AJAX सीखने की कोशिश कर रहा है। मैं के साथ एक सरल asp.net वेब प्रपत्र प्रोजेक्ट बनाया निम्नलिखित:अजाक्स कॉल राज्य संसाधन लोड करने में विफल रहे। सरल एएसपीनेट संपर्क वर्ग

namespace JSONTest 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     public class Contact 
     { 
      public string Name { get; set; } 
     } 

     List<Contact> contacts = new List<Contact> 
     { 
      new Contact{ Name = "George" }, 
      new Contact{ Name = "Mike" }, 
      new Contact{ Name = "Steve"} 
     }; 

     [WebMethod] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public List<Contact> GetContacts() 
     { 
      return contacts; 
     } 
    } 
} 

मेरे js फ़ाइल बस यह था:

$(document).ready(function() { 

    $.ajax({ 
     type: "POST", 
     async: true, 
     url: "Default.aspx/GetContacts", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      $.each(data, function (key, val) { 
       console.log(val.Name); 
      }); 
     } 
    }); 
}); 

मैं JavaScript कंसोल की उम्मीद की होगी संपर्क का नाम, लेकिन यह सिर्फ प्रदर्शित करने के लिए Failed to load resource: The server responded with a status of 500 (internal server error) http://localhost:someNumber/Default.aspx/GetContacts कहते हैं। मुझे यकीन नहीं है कि मैं गलत तरीके से क्या कर रहा हूं?

उत्तर

2

मेरा वाक्यविन्यास थोड़ा सा था। वेब विधि में जोड़ा गया static पर ध्यान दें।

public partial class Default : System.Web.UI.Page 
{ 
    public class Contact 
    { 
     public string Name { get; set; } 
    } 

    static List<Contact> contacts = new List<Contact> 
    { 
     new Contact{ Name = "George" }, 
     new Contact{ Name = "Mike" }, 
     new Contact{ Name = "Steve"} 
    }; 

    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static List<Contact> GetContacts() 
    { 
     return contacts; 
    } 
} 

सर्वर की ओर JSON लिपटे - तो आप data.d उपयोग करने के लिए की जरूरत है।

$(document).ready(function() { 

    $.ajax({ 
     type: "POST", 
     async: true, 
     url: "Default.aspx/GetContacts", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      $.each(data.d, function (key, val) { 
       console.log(val.Name); 
      }); 
     } 
    }); 
}); 

ऐसा करने का एक और तरीका किसी पृष्ठ पर केवल एक विधि के बजाय एएसएमएक्स सेवा का उपयोग करना है। इससे ऐसा होता है कि विधियों को स्थैतिक नहीं होना चाहिए और यह एक वास्तविक वेब सेवा है।

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService] 
public class WebService1 : System.Web.Services.WebService 
{ 
    public class Contact 
    { 
     public string Name { get; set; } 
    } 

    List<Contact> contacts = new List<Contact> 
    { 
     new Contact{ Name = "George" }, 
     new Contact{ Name = "Mike" }, 
     new Contact{ Name = "Steve"} 
    }; 

    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public List<Contact> GetContacts() 
    { 
     return contacts; 
    } 
} 

और जावास्क्रिप्ट:

$(document).ready(function() { 

    $.ajax({ 
     type: "POST", 
     async: true, 
     url: "WebService1.asmx/GetContacts", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      $.each(data.d, function (key, val) { 
       console.log(val.Name); 
      }); 
     } 
    }); 
}); 
+0

आप सही मैं इसे स्थिर करना भूल गए थे, जो मैं एक बैकएंड पृष्ठभूमि एसक्यूएल सर्वर से आते हैं, आदि मैं एक सामने अंत डेवलपर शिक्षा का अधिक बनना चाहते हैं जेसन, जेएस, और jquery के बारे में। मैंने बस कुछ जावास्क्रिप्ट पुस्तकें पढ़ी हैं, लेकिन मुझे एएसपीनेट के साथ jquery में कोडित एक साधारण संपर्क ऐप जैसे अच्छे नमूना असली दुनिया ऐप्स प्राप्त करना मुश्किल लगता है। क्या आप अपने स्तर तक पहुंचने के लिए किसी भी किताब या प्रशिक्षण की सलाह देते हैं। धन्यवाद धन्यवाद पर बहुत बढ़िया। – oJM86o

+0

आपका स्वागत है! मैं अत्यधिक प्लुरसाइट या टेकपब (मैं दोनों की सदस्यता लेता हूं) की सदस्यता लेने का सुझाव देता हूं। मैंने पाया है कि उन प्रशिक्षण वीडियो वास्तविक दुनिया के उदाहरण देने के दौरान मुझे बहुत मदद करते हैं। –

+0

इस फ्रंट एंड प्रोग्रामिंग को अपेक्षाकृत कठिन बनाना सामान्य बात है। बस इसे समझने के लिए मुझे कुछ समय लग रहा है। मैं वास्तव में इसे सीखना चाहता हूं लेकिन जैसे ही मैं एक विषय सीखता हूं, मुझे लगता है कि ऐसा करने के अन्य तरीके हैं। जावास्क्रिप्ट में अनाम कार्यों, चेनिंग इत्यादि का मिश्रण यह काफी कठिन बनाता है। – oJM86o

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