2013-03-29 51 views
7

Tôi phải chuyển mảng hai chiều sang phương thức trang được viết ở mã phía sau trang web trong asp.net Tôi có một biến số objList làm mảng hai chiều. Tôi đã sử dụng mã sau để đạt được điều này mà không thành công và phương thức trang không được gọi.Vượt qua mảng để mã sau từ 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() { } 
    }); 
    } 

mã sau cs tập

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

Có phương pháp như JSON.stringify (objList) để vượt qua các mảng json mã đằng sau nhưng không thể thực hiện điều này. Một cuộc gọi đơn giản wihtout mảng làm việc cho tôi như

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

và trong mã đằng sau

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

Có vấn đề trong việc thông qua data. Bạn có thể giúp tôi làm thế nào để vượt qua nó cho mảng?

Trả lời

6

Thử JSON ký hiệu đúng trong 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); 
     } 
    }); 

Trong mã phía sau, bạn có thể deserialize với 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"; 
} 

tôi phải deserialize một generic danh sách chuỗi mảng vì bạn không thể deserialize thành chuỗi (kiểm tra: http://forums.asp.net/t/1713640.aspx/1)

+0

Phương pháp web không được nhấn khi tôi gỡ lỗi mã. Những thay đổi cần thiết trong mã đằng sau hàm. –

+1

Bạn đang truyền một chuỗi như sau: {data: [["a", "b"], ["a", "b"], ["a", "b"]]}. Vì vậy, bạn cần phải thay đổi tham số từ chuỗi (,) thành chuỗi và sử dụng System.Web.Script.Serialization.JavaScriptSerializer để deserialize thành chuỗi (,). Tôi sẽ làm ví dụ. – JurgenStillaert

+0

Tôi đã thay đổi mã của tôi theo đề xuất của bạn, Mảng được tạo nhưng mã đằng sau phương pháp vẫn không nhấn. –

Các vấn đề liên quan