asp.net - Calling Linq to SQL method in Web service with jQuery -


मेरे पास एक परीक्षण वेब सेवा है: MySimpleService.svc नामक विधि के साथ: GetUserNamesByInitials नीचे लिनक को एसक्यूएल कोड है:

  [ऑपरेशन कॉन्ट्रैक्ट] सार्वजनिक स्टेटिक स्ट्रिंग गेटयूसर नामों के साथ (स्ट्रिंग इनिशिएल्स) {string result = ""; // डेटा स्रोत var testDB प्राप्त करें = नया TestDBDataContext (); // query var query = c से testDB.TestTables बनाएँ जहां c.initials == आद्याक्षर चुनें c; // क्वेरी निष्पादित करें foreach (क्वेरी में var c) {result = result + c.full_name; } वापसी परिणाम; }  

मैंने उस कोड को पृष्ठ के पीछे प्रयोग किया है और यह अच्छी तरह से काम करता है। लेकिन जब मैं इसे jQuery का उपयोग करने की कोशिश करता हूं तो मुझे कोई परिणाम नहीं मिलता है, कोई त्रुटि नहीं है नीचे कोड है जो मैं jQuery में उपयोग करता हूं:

  $ ('# textbox3')। Live ('keydown', फ़ंक्शन (e) {var keycode = e.keyCode || e.wich; If (keycode == 9) {e.preventDefault (); // कॉल समारोह यहाँ $। एजेक्स ({प्रकार: "POST", url: "/MySimpleService.svc/GetUserNamesByInitials", contentType: "application / json; charset = Val () + '"}', सफलता: फ़ंक्शन (डेटा) {$ ('#' ('#)', 'utf-8', डेटा प्रकार:" json ", डेटा: '{" शब्द ":"' $ ('# पाठ बॉक्स 3')। TextBox4 ')। Val (data.d);}}};}}); });  

मुझे एक टेक्स्ट बॉक्स (टेक्स्टबॉक्स 3) में यूजर आईडी लिखना है और जब मैं टैब कुंजी दबाता हूं, तो परिणाम दूसरे टेक्स्टबॉक्स (टेक्स्टबॉक्स 4) में दिखाया जाता है। JQuery कॉल अन्य विधियों के साथ अच्छी तरह से काम करता है, जो डेटाबेस को कॉल नहीं करते हैं, उदाहरण के लिए इस अन्य वेब सेवा पद्धति का उपयोग करते हुए यह काम करता है:

  [ऑपरेशनकैन्ट्रैक्ट] सार्वजनिक स्ट्रिंग पैरामीटरएक्साइन्सेनटेस्ट (स्ट्रिंग वर्ड) {रिटर्न स्ट्रिंग प्रारूप ("आपने शब्द दर्ज किया है: {0}", शब्द); }  

हालांकि Linq विधि के साथ यह काम नहीं करता है शायद मैं कुछ गलत कर रहा हूं? आपको पहले से धन्यवाद।

वेब सेवा "आद्याक्षर" नामक स्ट्रिंग की अपेक्षा कर रहा है और आप भेज रहे हैं यह एक शब्द "शब्द" कहलाता है इससे अधिक संभावना यह एक अपवाद फेंक रहा है कि उसे अपेक्षित पैरामीटर पारित नहीं किया जा रहा है।

त्रुटि जोड़ने की कोशिश करें: फ़ंक्शन () अपने $ .ajax () कॉल में त्रुटि को पकड़ने के लिए। मैं AJAX अनुरोध और प्रतिक्रिया को देखने और देखने और डिबग करने में सक्षम होने या स्थापित करने का सुझाव भी दूंगा। यहां अपडेट किया गया $ .ajax () सही पैरामीटर नाम और एक त्रुटि फ़ंक्शन के साथ कॉल करें, जिसे आपके चुने हुए जावास्क्रिप्ट डीबगर को खोलना चाहिए, यदि आपने इसे खोल दिया है:

  $। Ajax ({type: "POST ",": "$ ('# TextBox3')," ',' ',' ',' ',' ',' ' ) .val () + '"}', सफलता: कार्य (डेटा) {$ ('# पाठ बॉक्स 4')। Val (data.d);}, त्रुटि: फ़ंक्शन (XMLHttpRequest, textStatus, errorThrown) {चेतावनी ('त्रुटि ! '); डीबगर; // आपको फ़ायरबग, आईई 8 डिबगर, इत्यादि में जवाब देखें}}});  

अपडेट

इसलिए मैंने देखा कि आप सामान्य एएसपी.नेट (एएसएमएक्स) सेवाओं की बजाय डब्लूसीएफ सेवाओं का उपयोग कर रहे हैं ... कुछ अतिरिक्त सुझाव:

  1. अपने web.config में सक्षम करें ताकि आप किसी भी त्रुटि के कारण डीबग कर सकें। ASP.Net सेवाओं डिफ़ॉल्ट रूप से एक त्रुटि लौटेगी लेकिन आपको स्पष्ट रूप से WCF के लिए इसे चालू करना होगा।

  2. आपको निर्दिष्ट करने के लिए अपने [ऑपरेशनकैंट्रेट] विशेषता के नीचे एक अतिरिक्त विशेषता जोड़ने का प्रयास करें, JSON डेटा के साथ एक पोस्ट की उम्मीद कर रहा है:

      [WebInvoke (method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]  

Comments

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -