2012-01-15 5 views
5

पर एक सरणी पास करें मेरे पास जावास्क्रिप्ट में एक सरणी है और मुझे इसे अपने सी # वेबमाइड पर प्राप्त करने की आवश्यकता है। इसे करने का बेहतरीन तरीका क्या है?जावास्क्रिप्ट से सी #

मेरी सी # कोड इस तरह है:

[WebMethod] 
public static void SaveView(string[] myArray, string[] filter) 
{ 
} 

EDIT--

मेरे json डेटा इस तरह दिखता है:

{"myArray":[{"name":"Title","index":"Title","hidden":false,"id":"1","sortable":true,"searchoptions":{"sopt":["cn","eq","bw","ew"]},"width":419,"title":true,"widthOrg":150,"resizable":true,"label":"Title","search":true,"stype":"text"},{"name":"Author","index":"Author","hidden":false,"id":"3","sortable":true,"searchoptions":{"sopt":["cn","eq","bw","ew"]},"width":419,"title":true,"widthOrg":150,"resizable":true,"label":"Author","search":true,"stype":"text"}]} 

लेकिन मैं काम नहीं करता ... किसी भी विचार क्यों?

बहुत बहुत धन्यवाद।

+1

-1 आपका अपडेट किया गया प्रश्न मूल एक से पूरी तरह अलग है तो एक मॉडल है कि JSON संरचना से मेल खाएगी आप भेज रहे हैं परिभाषित करते हैं। आप उस ऑब्जेक्ट सरणी को स्ट्रिंग सरणी {{"नाम": "शीर्षक", "अनुक्रमणिका" में परिवर्तित करना चाहते हैं: "शीर्षक", "छिपी हुई": झूठी, "आईडी": "1", "क्रमबद्ध ": सच है, " searchoptions ": { " sopt ": [ " cn ", " eq ", " BW ", " ew " ] },' –

उत्तर

16

आप इसे JSON स्ट्रिंग के रूप में भेज सकते हैं। यहाँ jQuery का उपयोग कर एक उदाहरण है: अपने पृष्ठ विधि कुछ रिटर्न

var array = [ 'foo', 'bar', 'baz' ]; 
$.ajax({ 
    url: '/foo.aspx/SaveView', 
    type: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify({ myArray: array }), 
    success: function(result) { 

    } 
}); 

हैं, तो आप पेज विधि कॉल का परिणाम लाने के लिए सफलता कॉलबैक में result.d संपत्ति का उपयोग करना चाहिए।

यदि आप jQuery का उपयोग नहीं करते हैं, तो आपको AJAX अनुरोध भेजने में ब्राउज़र अंतरों के लिए मैन्युअल रूप से खाता होना होगा। लेकिन इसके लिए वहाँ 2 महत्वपूर्ण बातें अनुरोध में शामिल हो रहे हैं काम करने के लिए:

  • सामग्री प्रकार अनुरोध हेडर application/json
  • में सेट होना चाहिए अनुरोध पेलोड JSON होना चाहिए, उदाहरण के लिए: { myArray: [ 'foo', 'bar', 'baz' ] }

अद्यतन:

अब जब आपने अपने प्रश्न को अद्यतन किया है ऐसा लगता है कि आप अब str की एक सरणी भेजने के लिए तैयार हैं बैठकों।

public class Model 
{ 
    public string Name { get; set; } 
    public string Index { get; set; } 
    public bool Hidden { get; set; } 
    public int Id { get; set; } 
    public bool Sortable { get; set; } 
    public SearchOption Searchoptions { get; set; } 
    public int Width { get; set; } 
    public bool Title { get; set; } 
    public int WidthOrg { get; set; } 
    public bool Resizable { get; set; } 
    public string Label { get; set; } 
    public bool Search { get; set; } 
    public string Stype { get; set; } 
} 

public class SearchOption 
{ 
    public string[] Sopt { get; set; } 
} 

और उसके बाद:

[WebMethod] 
public static void SaveView(Model[] myArray) 
{ 
} 
+0

आप, धन्यवाद कैसे मेरे WebMethod दिखना चाहिए ? – Ovi

+0

@ ओवी, आप मुझे यह जानने की उम्मीद कैसे करते हैं? यह इस विधि पर निर्भर करेगा कि आप इस विधि को क्या करना चाहते हैं। लेकिन आपके द्वारा दिखाए गए हस्ताक्षर सही हैं और इसे 'स्ट्रिंग []' तर्क प्राप्त होगा: '[WebMethod] सार्वजनिक स्थैतिक शून्य SaveView (string [] myArray) {...}'। –

+0

आपकी वेब विधि ठीक लगती है - आपको अपनी आवश्यकताओं को निर्दिष्ट करने वाले सरणी के साथ करना होगा। यह सब आप पर निर्भर है और हम वास्तव में आपकी मदद नहीं कर सकते हैं। :) – FarligOpptreden

2
var xhr = new XMLHttpRequest(); 
xhr.open("POST", "mypage/SaveView"); 
xhr.setRequestHeader("Content-Type", "application/json"); 
xhr.send(JSON.stringify({ myArray: someArray })); 
+0

नहीं, यह काम नहीं करेगा। 'myArray = ...' अवैध JSON है। आपको पूरे शाब्दिक को मजबूत करना होगा। एक उदाहरण के लिए मेरा जवाब देखें। –

+0

नहीं, इस विशेष मामले में आप JSON चाहते हैं, अन्यथा एएसपी.NET पृष्ठ विधि जिसे ओपी का आह्वान करने का प्रयास कर रहा है, काम नहीं करेगा। एएसपी.नेट पेज विधि जेएसओएन एन्कोडेड अनुरोधों की अपेक्षा करते हैं और जेएसओएन एन्कोडेड परिणाम भेजते हैं। –

+0

@DarinDimitrov पेजमाइड्स "एप्लिकेशन/एक्स-www-form-urlencoded" के साथ काम नहीं करते हैं? – Raynos

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