2013-03-29 30 views
7

我必須將二維數組傳遞給在asp.net中的網頁後面的代碼中編寫的頁面方法我有一個變量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陣列工作對我來說就像

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

,並在後面的代碼

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

有在通過data問題。你能幫助我如何將它傳遞給數組嗎?

回答

6

嘗試正確的JSON對象在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); 
     } 
    }); 

在後面的代碼,你可以使用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"; 
} 

我不得不反序列化到一個通用的一個字符串數組的列表,因爲你不能反序列化爲一個字符串(檢查:http://forums.asp.net/t/1713640.aspx/1

+0

當我調試代碼時,Web方法沒有打到。代碼後面的功能需要進行哪些更改。 –

+1

您正在傳遞一個字符串,例如:{data:[[「a」,「b」],[「a」,「b」],[「a」,「b」]]}。因此,您需要將參數從字符串(,)更改爲字符串,並使用System.Web.Script.Serialization.JavaScriptSerializer將其反序列化爲字符串(,)。我會研究這個例子。 – JurgenStillaert

+0

我已根據您的建議更改我的代碼,數組已創建,但代碼隱藏方法仍然沒有打。 –

相關問題