Возврат сложного объекта из вызова AJAX - PullRequest
0 голосов
/ 26 декабря 2009

используемая среда: 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 Ответ

2 голосов
/ 26 декабря 2009

Это может относиться к методу 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...
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...