2011-05-23 15 views
6

क्या मैं क्लाइंट-साइड जावास्क्रिप्ट से एएसपी.NET के माध्यम से सर्वर-साइड कोड में ऑब्जेक्ट भेज सकता हूं?क्या मैं क्लाइंट-साइड जावास्क्रिप्ट से एएसपी.NET के माध्यम से सर्वर-साइड कोड में ऑब्जेक्ट भेज सकता हूं?

उत्तर

1

हां। आप जेसन का उपयोग कर सकते हैं और पोस्ट कर सकते हैं। यदि आप jQuery का उपयोग कर रहे हैं तो आप सर्वर को तरफ पोस्ट करने के लिए $ .ajax का उपयोग कर सकते हैं। उम्मीद है की यह मदद करेगा।

+0

क्या आप मुझे अधिक के बारे में Json बता सकते हैं? – Badr

+1

यह एक अच्छा संदर्भ बिंदु है http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx – ysrb

3

हां। वेब विधि का उपयोग करने के लिए एक तरीका हो सकता है; उदाहरण के लिए:

  1. एक सेवा बनाएं
  2. तरह JavaScript विधि से कॉल: DataService.Push(yourObject);

उदाहरण के लिए:

जावास्क्रिप्ट तरीके:

function btnGenerate_onclick(result) { 
    DataService.Push(getDataFromSomeDiv(), onGenerateReportComplete /*callback method*/); 
    //or 
    //DataService.Push(document.getElementById("myDiv").innerHTML, onGenerateReportComplete /*callback method*/); 

} 

function onGenerateReportComplete(result) { 
      alert("Success:" + result); 
} 

सेवा तरीके:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.Web.Script.Services.ScriptService] 
public class DataService : System.Web.Services.WebService 
{ 

    [WebMethod(EnableSession = true)] //If you want? 
    public bool Push(object someObject) 
    { 
     //var v = someObject as MyObjectClass;//Process object 
     return true; 
    } 
} 

संपादित करें: जावास्क्रिप्ट कैसे पता होगा सर्वर साइड DataService क्या है ?

इसे मार्कअप में वेब सेवा के संदर्भ की आवश्यकता होगी। उदाहरण के लिए निम्नलिखित की तरह:

<asp:ScriptManager ID="sm" runat="server"> 
      <Services> 
      <asp:ServiceReference Path="DataService.asmx" /> 
     </Services> 
</asp:ScriptManager> 

या आप page methods कॉलबैक का उपयोग कर सकते /।

+0

आप कुछ चूक गए। जावास्क्रिप्ट कैसे पता चलेगा कि सर्वर-साइड डेटा सेवा क्या है? – VikciaR

+0

अच्छा सवाल, संपादन देखें। –

2

ऐसा नहीं है। आप ऑब्जेक्ट को स्ट्रिंग पर क्रमबद्ध कर सकते हैं, उस स्ट्रिंग को ASP.NET पर भेजें और उसके बाद इसे दूसरी ओर एक ऑब्जेक्ट में परिवर्तित करें।

जेएसओएन इसके लिए एक अच्छा क्रमबद्धता प्रारूप है, और आप साधारण ऑब्जेक्ट्स को सीधे इसके आसपास के विभिन्न पुस्तकालयों में छोड़ सकते हैं (और listed in the penultimate section of the JSON homepage हैं)।

अधिक जटिल वस्तुओं के लिए, आपको उस डेटा के अवशेष बिट्स निकालने की आवश्यकता होगी जो आपको करने से पहले उन्हें फिर से बनाने के लिए आवश्यक है।

4

ASP.NET WebForms में मैं एक ScriptService का प्रयोग करेंगे:

चेकआउट इस नमूने: ASP.NET ScriptService deserialization problem with derived types

: http://msdn.microsoft.com/en-us/magazine/cc163499.aspx

GenerateScriptType विशेषता अगर आप पास करना चाहते हैं/सेवा करने के लिए छेद वस्तुओं मिल इस्तेमाल किया जा सकता

[WebService(Namespace = "http://msdnmagazine.com/ws")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[GenerateScriptType(typeof(Object1))] 
[GenerateScriptType(typeof(Object2))] 
[ScriptService] 
public class StockQuoteService : WebService 
{ 
    static Random _rand = new Random(Environment.TickCount); 

    [WebMethod] 
    public int GetStockQuote(string symbol) 
    { 
     return _rand.Next(0, 120); 
    } 
} 
+0

आपका नमूना दिखाता है कि वेब सेवा को कैसे कॉल करें और एक मान पास करें, हालांकि यह किसी ऑब्जेक्ट को पास करने का तरीका नहीं दिखाता है (गुणों सहित)। –

1

बेन डॉटनेट एएसपीनेट वेबफॉर्म में स्क्रिप्ट सेवा का उपयोग करने के बारे में सही है। स्क्रिप्ट सेवा सजावट जेनरेटस्क्रिप्ट टाइप सजावटी यह सुनिश्चित करने के लिए महत्वपूर्ण है कि जटिल प्रकार जिसे आप उपयोग करना चाहते हैं, शामिल है। मैंने बेन को इस के अलावा उपयोगी होने के लिए लिंक किया: http://www.webreference.com/programming/asp-net-ajax/complex-data-types/index.html

यहां बताया गया है कि मैं वास्तव में क्या कर रहा हूं। सबसे पहले मैंने उस कस्टम प्रकार को परिभाषित किया जिसे मैं फ़ाइल के पीछे अपने कोड में उपयोग करना चाहता था।

namespace TestProject 
{ 
    public class SampleData 
     { 
      public int id { get; set; } 
      public string StartDate { get; set; } 
      public string EndDate { get; set; } 

      public SampleData() 
      { } 
    } 
    public partial class SamplePage : System.Web.UI.Page 
    { 
     /* The rest of the SamplePage.aspx.cs file goes here */ 
    } 
} 

तब मैं कोई WebMethod/ScriptMethod मेरी SamplePage कोड में पीछे इस तरह बनाया:

[WebMethod] 
[ScriptMethod] 
[GenerateScriptType(typeof(SampleData))] 
public static bool EditReminder(SampleData data) 
{ 
    /* Server side code goes here */ 
    return true; 
} 

फिर, क्लाइंट साइड पृष्ठ पर मैं प्रकार SampleData और पास की एक वस्तु बनाने के लिए कर रहा था कि इस तरह के पेजमाइड्स का उपयोग करना। नामस्थान शामिल करना न भूलें, यह आवश्यक है।

function some_javascript_function() { 
    var sample_data = new TestProject.SampleData() 
    sample_data.id = 1; 
    sample_data.StartDate = '6/24/1976'; 
    sample_data.EndDate = '3/20/2012'; 
    PageMethods.EditReminder(sample_data, OnEditReminderComplete) 
} 

function OnEditReminderComplete() { 
    if (result) alert("Success!"); 
    else alert("Failure!"); 
} 
इसके अलावा

, मत भूलना स्क्रिप्ट प्रबंधक शामिल हैं और इसे अपने पृष्ठ पर कहीं की तरह पेज तरीकों सक्षम करने के लिए: (उदाहरण के समझाने)

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" /> 
संबंधित मुद्दे

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