2013-03-29 18 views
7

Devo passare array bidimensionale al metodo di pagina scritto sul codice dietro la pagina Web in asp.net Ho una variabile objList come una matrice bidimensionale. Ho usato il seguente codice per raggiungere questo risultato senza successo e il metodo di pagina non viene chiamato.Passare l'array al codice da 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() { } 
    }); 
    } 

codice dietro .CS file

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

C'è metodo come JSON.stringify (objList) passare la matrice JSON al codice dietro ma non poteva implementalo. Una semplice chiamata wihtout gamma lavorando per me come

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

e nel codice dietro

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

c'è problema nel passare data. Puoi aiutarmi come passare per gli array?

risposta

6

Prova la corretta notazione JSON in JavaScript

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); 
     } 
    }); 

Nel codice dietro, è possibile deserializzare con JavaScriptSerializer (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"; 
} 

ho dovuto deserializzare ad un generico elenco di un array di stringhe perché non è possibile deserializzare in una stringa (controllare: http://forums.asp.net/t/1713640.aspx/1)

+0

Il metodo Web non viene colpito quando eseguo il debug del codice. Quali modifiche sono richieste nel codice dietro la funzione. –

+1

Stai passando una stringa come: {data: [["a", "b"], ["a", "b"], ["a", "b"]]}. Quindi è necessario modificare il parametro da stringa (,) a stringa e utilizzare System.Web.Script.Serialization.JavaScriptSerializer per deserializzare in stringa (,). Lavorerò sull'esempio. – JurgenStillaert

+0

Ho cambiato il mio codice come da tuo suggerimento, gli array sono creati ma il codice dietro il metodo continua a non colpirlo. –

Problemi correlati