ajax调用序列化和反序列化数据

时间:2013-11-13 17:01:36

标签: c# javascript ajax json serialization

我有以下ajax调用:

$(document).ready(function() {
            $.ajax({
                type: "POST",
                url: "/LoadCount.aspx/GetCounts",
                contentType: "application/json; charset=utf-8",
                data: "",
                async: false,
                dataType: "json",
                success: function(data) {
                  var myObj = JSON.parse(data.d);
                  alert(myObj.length);
                  for (var i = 0; i < myObj.length; i++) {
                    alert(myObj[0]);
                  }

                },
                error: function(xhr, status, error) {
                    var err = eval("(" + xhr.responseText + ")");
                    alert(err.Message);
                }
            });
        });

当我提醒长度

时,我正在未定义

这是我的LoadCount.aspx中的方法

[WebMethod]
    public static string ObtenerContador()
{
    List<MenuItem> menu =(List<MenuItem>)HttpContext.Current.Session["MenuItems"];

    Dictionary<string, int> dic = new Dictionary<string, int>();
    foreach (MenuItemAMostrar item in menu)
    { 
        dic.Add(item.ControlID,1);
    };

    return new JavaScriptSerializer().Serialize(dic); //or any other suggested serialization method
}

这就是我在成功函数中得到的结果:

{"MenuCLESAAsignar":1,"MenuOCGestores":1,"MenuOcAAutorizar":1,"MenuOcAAutorizarBanco":1,"MenuOCGestoresObservadas":1,"MenuCLESActivos":1,"MenuParametros":1,"MenuCLESConAddendaAAprobarSup":1,"MenuPendienteAprobacion":1,"MenuConsultaCLES":1}

问题是,如何在我的ajax成功函数中反序列化该词典? 一旦反序列化,我如何填充它,获取数据?

谢谢!

2 个答案:

答案 0 :(得分:1)

你在找这个吗?

success: function (data)
{               
    var myObj = JSON.parse(data.d);
},

答案 1 :(得分:1)

正如其他人提到的那样,您只需使用JSON.parse()来解析数据。

从那里创建一个对象,您可以使用.访问数据。

像这样:

http://jsfiddle.net/SJGLF/1/

var myData = JSON.parse(jsonData);
for(var i in myData)
{
    console.log(i + " = " + myData[i]);
}
相关问题