2009-12-26 67 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