2013-03-29 5 views
7

मुझे एएसपीनेट में वेब पेज के पीछे कोड पर लिखे गए पेज विधि में दो आयामी सरणी पारित करनी है, मेरे पास एक दो आयामी सरणी के रूप में एक चर objList है। मैंने इसे सफलतापूर्वक प्राप्त करने के लिए निम्नलिखित कोड का उपयोग किया और पृष्ठ विधि को नहीं कहा जाता है।jquery AJAX से पीछे कोड में पास सरणी

JAVASCRIPT

function BindTable(objList) { 

    $.ajax(
    { 
      url: "CompCommonQues.aspx/SaveData", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      type: "POST", 
      data: { data: objList }, 
      success: function (data) { 
      //Success code here 
    }, 
    error: function() { } 
    }); 
    } 

कोड के पीछे .cs फ़ाइल

[WebMethod] 
public static string SaveData(string[,] data) 
{ 
    string[,] mystring = data; 
    return "saved"; 
} 

वहाँ JSON.stringify (objList) की तरह विधि के पीछे कोड करने के लिए json सरणी पारित करने के लिए है, लेकिन नहीं कर सका इसे लागू करें। सरणी wihtout एक साधारण कॉल के पीछे

[WebMethod] 
public static string SaveData(string data) 
{ 
    string mystring = data; 
    return "saved"; 
} 

data: "{ 'data':'this is string' }", 

और कोड में की तरह मेरे लिए काम कर data पारित करने में समस्या है। क्या आप मेरी सहायता कर सकते हैं कि इसे सरणी के लिए कैसे पास किया जाए?

उत्तर

6

जावास्क्रिप्ट में सही JSON अंकन का प्रयास करें

var objList = new Array(); 
objList.push(new Array("a","b")); 
objList.push(new Array("a", "b")); 
objList.push(new Array("a", "b")); 

    $.ajax({ 
     type: "POST", 
     url: "copyproduct.aspx/SaveDate", 
     data: "{'data':'" + JSON.stringify(objList) + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      alert(msg.d); 
     } 
    }); 

कोड में पीछे है, तो आप JavaScriptSerializer साथ deserialize कर सकते हैं (System.Web.Script.Serialization)

[WebMethod()] 
public static string SaveDate(string data) 
{ 
    JavaScriptSerializer json = new JavaScriptSerializer(); 
    List<string[]> mystring = json.Deserialize<List<string[]>>(data); 
    return "saved"; 
} 

मैं एक सामान्य करने के लिए deserialize करना पड़ा स्ट्रिंग सरणी की सूची क्योंकि आप स्ट्रिंग को deserialize नहीं कर सकते हैं (चेक: http://forums.asp.net/t/1713640.aspx/1)

+0

जब मैं कोड डीबग करता हूं तो वेब विधि मार नहीं रही है। फ़ंक्शन के पीछे कोड में क्या परिवर्तन आवश्यक हैं। –

+1

आप एक स्ट्रिंग पास कर रहे हैं जैसे: {data: [["a", "b"], ["a", "b"], ["a", "b"]]}। तो आपको स्ट्रिंग (,) से पैरामीटर को स्ट्रिंग में बदलने और System.Web.Script.Serialization.JavaScriptSerializer का उपयोग स्ट्रिंग (,) को deserialize करने के लिए करने की आवश्यकता है। मैं उदाहरण का काम करूंगा। – JurgenStillaert

+0

मैंने आपके सुझाव के अनुसार अपना कोड बदल दिया है, Arrays बनाए गए हैं लेकिन विधि के पीछे कोड अभी भी मार नहीं रहा है। –

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