AJAX

2012-06-20 11 views
7

का उपयोग कर कोड के पीछे एक जावास्क्रिप्ट सरणी भेजना (सी #) भेजना मैं सी # और जावास्क्रिप्ट के लिए थोड़ा नया हूं, जबकि मेरा प्रश्न विशिष्ट है, मैं किसी भी विकल्प के लिए खुला हूं।AJAX

मेरे पास मूल्यों की एक सरणी है (जिसे मैंने जावास्क्रिप्ट फ़ंक्शन में बनाया है) कि मैं किसी विधि में उपयोग करने के लिए अपनी कोड-बैक फ़ाइल को भेजना चाहता हूं। AJAX का उपयोग करके मैंने जो शोध किया है और JSON के साथ सरणी को स्ट्रिंग करने से सबसे अच्छी विधि की तरह लगता है।

मेरे सवालों का

  1. मैं सरणी इस पद्धति का उपयोग कर सकता हूँ कर रहे हैं?

  2. मैं सर्वर साइड पर जानकारी कैसे प्राप्त कर सकता हूं (मेरे में कोड-पीछे?)

जावास्क्रिप्ट मूल्यों

var jsonvalues = JSON.stringify(values); 
var callback = window.location.href 
$.ajax({ 
    url: callback 
    type: "POST", 
    contentType: 'application/json', 
    data: jsonvalues 
}); 

गुजर रहा का उपयोग कर कई समाधान देखा है [WebMethod ] या डेटा को कैप्चर करने के लिए किसी प्रकार की वेब सेवा, क्या मैं डेटा को वापस किए बिना अपने कोड-बैक फ़ाइल में काम करने के लिए इसका उपयोग कर सकता हूं?

यहाँ क्या मैं अपने पर सबसे आसान तरीका उपयोग कर रहा हूँ फ़ाइल

[WebMethod] 
public static void done(string[] ids) 
{ 
String[] a = ids; 
} 
+0

धन्यवाद! मेरे प्रश्न को दूर करने के बाद यह स्पष्ट हो गया है कि यह एक महत्वपूर्ण घटक है। मैं पहले '[HttpPost]' का उपयोग करके मिलिमेट्रिक के जवाब को आजमाने और उपयोग करने जा रहा हूं। –

+0

मुझे अभी भी पता नहीं है कि कोड-पीछे की तरफ कॉल को कैसे संभाला जाए। मैंने सरणी को कैप्चर करने के लिए एक विधि लिखने की कोशिश की लेकिन मुझे AJAX कॉल के साथ त्रुटि मिल रही है। मैंने मूल कोड –

+0

पर अपना कोड-बैक विधि जोड़ा है इस प्रश्न पर एक नज़र डालें [एएसपी.नेट वेबमेडिंग रिटर्निंग संपूर्ण पृष्ठ के साथ Jquery AJAX] (http://stackoverflow.com/questions/348689/jquery-ajax -साथ-एएसपी निवल webmethod-लौट-पूरे पृष्ठ का)। सामान लौटने के बारे में अनदेखा करें और देखें कि वे 'यूआरएल' कैसे बना रहे हैं। – R0MANARMY

उत्तर

4

मैंने एएसपी.नेट एमवीसी का उपयोग करके इसके लिए गहन उदाहरण लिखा है, लेकिन इसे आसानी से वेबफॉर्म के लिए अनुकूलित किया जा सकता है।

Send data with jquery to an MVC controller

HTML और jQuery जहां WebMethod कॉल के अपवाद के साथ, एक ही लगभग ठीक दिखेगा।

यदि आप जिस पृष्ठ का उपयोग कर रहे हैं उसे Default.aspx कहा जाता है, और विधि को Done कहा जाता है, तो WebMethod के लिए आपका यूआरएल Default.aspx/Done होगा।

<script> 
     // Grab the information 
     var values = {"1,","2","3"}; 
     var theIds = JSON.stringify(values); 

     // Make the ajax call 
     $.ajax({ 
     type: "POST", 
     url: "Default.aspx/Done", // the method we are calling 
     contentType: "application/json; charset=utf-8", 
     data: {ids: theIds }, 
     dataType: "json", 
     success: function (result) { 
      alert('Yay! It worked!');    
     }, 
     error: function (result) { 
      alert('Oh no :('); 
     } 
    }); 
    </script> 

आपका WebMethod अभी भी वही होगा।

[WebMethod] 
public static void done(string[] ids) 
{ 
    String[] a = ids; 
    // Do whatever processing you want 
    // However, you cannot access server controls 
    // in a static web method. 
} 
0

कोड-पीछे एक सूची ASP.NET MVC और डेटा बाँध उपयोग करने के लिए है। तो तारों की एक सूची के लिए, यह बहुत आसान होगा। बस एक नियंत्रक कार्रवाई है कि इस तरह दिखता है बनाने:

[HttpPost] 
public ActionResult MyAction(string[] values) 
{ 
    ... debug and see that values gets set to your array from javascript ... 
} 

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

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

वेब पृष्ठों या वेब सेवाओं से [WebMethod] तरीकों बुला लिए, बाहर की जाँच इस गाइड:

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

मूल रूप से ही आप यूआरएल की जरूरत ServicePage.aspx/MethodName

+0

क्या मुझे अभी भी' $ .ajax' कॉल में सामग्री प्रकार निर्दिष्ट करने की आवश्यकता है? क्या मुझे' processData: false' का उपयोग करना चाहिए कॉल करें? –

+0

मैं आम तौर पर दृढ़ता से टाइप की गई चीजें बांधता हूं इसलिए मैंने फॉर्म सेट अप किया और उनको पोस्ट किया। मेरे मामले में, मुझे $ .ajax का उपयोग करने की भी आवश्यकता नहीं है, मैं सिर्फ $ .post का उपयोग करता हूं। यह सबसे अच्छी सलाह है जो मैं आपको दे सकता हूं। इसे ऊपर सेट करें और ऊपर दिखाए गए नियंत्रक कार्रवाई में ब्रेकपॉइंट डालें। फिर, अनुरोध objec देखें टी और देखें कि कौन से पैरामीटर पास किए जा रहे हैं। असल में, आप अल्पविराम से अलग सूची रखने के लिए "मान" नामक पैरामीटर चाहते हैं। फिर आप अपनी jQuery को बिल्कुल वही कर सकते हैं जो आपको चाहिए। – Milimetric

+0

आपकी सभी मदद के लिए धन्यवाद! हालांकि मैंने अभी पाया है कि जिस प्लेटफॉर्म पर मैं निर्माण कर रहा हूं (साइटकोर) अभी तक एमवीसी का समर्थन नहीं करता है (एक रिलीज जो इस महीने के अंत में बाहर हो जाएगा) मैं @ [WebMethod] 'का उपयोग करने की कोशिश कर रहा हूं जैसा कि @ R0MANARMY द्वारा उल्लिखित है इसके बदले में, लेकिन मैंने लिखा है कि विधि को ट्रिगर करने के लिए मेरा 'AJAX' कॉल नहीं मिल सकता है। मैंने 'url:' रजिस्टर/ट्रिगर 'कहने के लिए AJAX कॉल को संशोधित किया है जहां ट्रिगर मेरी कॉलबैक में विधि है। क्या मैं कुछ भूल रहा हूँ? फिर से, सभी कों मदद के लिए धन्यवाद! –

-1

होने के लिए एक hid में अपने डेटा रखो runat = सर्वर के साथ den क्षेत्र। फॉर्म पोस्ट करें और सामान्य रूप से डेटा लाएं।

+0

यह हमेशा जाने का सबसे सुरक्षित मार्ग नहीं है, मैं इसके खिलाफ सलाह दूंगा । –

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