2009-12-26 5 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, я хотел бы вернуть хеш-таблицу, чей ключ является строкой, а value - список разделенных запятыми строк. Как это сделать и как получить доступ к каждой паре значений ключей на стороне клиента?

веселит

ответ

2

Это может быть ссылка на метод 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... 
    } 
} 
+0

Благодаря Дарин. Конструкция отлично работает после того, как я использовал Serializer. Тем не менее, я не могу читать значения в jQuery, то есть $ ('# xDimLbl'). Text (msg.xDim); и $ ('# bDimLbl'). text (msg.bDim) ;. Нужно ли десериализовать msg перед интерпретацией его элементов? – Arnkrishn

+0

У вас есть сообщение об ошибке? Не могли бы вы отправить точный ответ JSON с сервера? –

+0

Включили ли вы методы страницы, включив диспетчер сценариев на странице aspx: '' –

Смежные вопросы