2013-03-29 93 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

我已根据您的建议更改我的代码,数组已创建,但代码隐藏方法仍然没有打。 –

相关问题