2009-12-26 70 views
0

环境中使用时返回复杂的对象:ASP.NET,jQuery的从AJAX调用

我有以下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(串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,我想返回一个哈希表,其中的键是一个字符串,值是一个逗号分隔的字符串列表。我该如何做,以及如何访问客户端的每个关键值对?

欢呼声

回答

2

这可以参照ASP.NET MVC控制器使用的Json方法。由于您的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... 
    } 
} 
+0

感谢达林。在使用串行器后,构建工作正常。但是,我无法读取jQuery中的值,例如$('#xDimLbl')。text(msg.xDim);和$('#bDimLbl')。text(msg.bDim);.在解释元素之前是否需要反序列化msg? – Arnkrishn 2009-12-26 08:32:04

+0

你收到一些错误信息吗?你能从服务器发布确切的JSON响应吗? – 2009-12-26 08:39:18

+0

您是否通过在您的aspx页面中包含一个脚本管理器来启用页面方法:'' – 2009-12-26 08:40:51