代码之家  ›  专栏  ›  技术社区  ›  Arnkrishn

从Ajax调用返回复杂对象

  •  0
  • Arnkrishn  · 技术社区  · 14 年前

    使用的环境:asp.net、jquery

    我有以下Ajax调用:

    var tempVar = JSON.stringify({plotID:currentId});            
    
    $.ajax({
           type: "POST",
           url: "testPage.aspx/getPlotConfig",
           data: tempVar,
           contentType: "application/json; charset=utf-8",
           dataType: "json",
           success: function(msg) {
           $('#xDimLbl').text(msg.xDim);
           $('#bDimLbl').text(msg.bDim);
           } 
    });
    

    代码隐藏的方法getplotconfig(string plotid)定义为

    public static string getPlotConfig(string plotID)
    {
          string x = "T1";
          string b = "T2";
          return Json(new { xDim= x, bDim= b });
    }
    

    问题:

    1. 当我进行构建时,我得到错误: 当前上下文中不存在名称“json” 哪个命名空间不正确?
    2. 除了两个字符串x和b,我还想返回一个哈希表,其键是一个字符串,值是一个逗号分隔的字符串列表。我该如何做以及如何访问客户端的每个键值对?

    干杯

    1 回复  |  直到 14 年前
        1
  •  2
  •   Darin Dimitrov    14 年前

    这可能是指 Json ASP.NET MVC控制器中使用的方法。作为你 getPlotConfig 函数是静态的,不能使用此方法。你可以看看 PageMethods . 下面是一个例子:

    [WebMethod]  
    [ScriptMethod]
    public static object getPlotConfig(string plotID)  
    {  
        var hash = new Dictionary<string, string>() 
        {
            { "key1", "valueA,valueB" },
            { "key2", "valueC,valueD" },
        };
        var x = "T1";
        var b = "T2";
        return new { xDim = x, bDim = b, hash = hash };
    }
    

    在javascript中:

    success: function(msg) {
       $('#xDimLbl').text(msg.d.xDim);
       $('#bDimLbl').text(msg.d.bDim);
       for(var key in msg.d.hash) {
           var value = msg.d.hash[key];
           // Do something with key and value...
        }
    }