7

asp.netのwebページのコードビハインドで書いたページメソッドに二次元配列を渡さなければいけないのですが、変数objListを二次元配列として持っています。これを成功させるために次のコードを使用しましたが、ページメソッドは呼び出されません。

ジャバスクリプト

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 配列を分離コードに渡す JSON.stringify(objList) のようなメソッドがありますが、これを実装できませんでした。私のように機能する配列のない単純な呼び出し

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

そしてコードビハインドで

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

通過に問題ありdata。配列に渡す方法を教えてください。

4

1 に答える 1

6

JavaScript で正しい 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 (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 )

于 2013-03-29T08:01:11.587 に答える