Проблема с JSONResult - PullRequest
       16

Проблема с JSONResult

1 голос
/ 18 марта 2010

Я все еще новичок в этом, поэтому я попытаюсь объяснить, что я делаю. По сути, я хочу загрузить выпадающий список в зависимости от значения предыдущего, и я хочу, чтобы он загружал данные и отображался при изменении другого. Это код, который я написал в моем контроллере:

public ActionResult GetClassesSearch(bool ajax, string phylumID, string kingdom){
  IList<TaxClass> lists = null;
  int _phylumID = int.Parse(phylumID);
  int _kingdom = int.Parse(kingdom);
  lists = _taxon.getClassByPhylumSearch(_phylumID, _kingdom);
  return Json(lists.count);
}

и вот как я вызываю метод из функции javascript:

function loadClasses(_phylum) {
 var phylum = _phylum.value;

 $.getJSON("/Suspension/GetClassesSearch/",
         { ajax: true,
             phylumID: phylum,
             kingdom: kingdom
         },
         function(data) {
             alert(data);
             alert('no fallo')
             document.getElementById("pClass").style.display = "block";
             document.getElementById("sClass").options[0] = new Option("-select-", "0", true, true);
             //for (i = 0; i < data.length; i++) {
             //   $('#sClass').addOption(data[i].classID, data[i].className);
             //}
         });

}

HTML-код связан с:

<p id="pPhylum">
                <%= Html.Label("Phylum: ") %>
                <%= Html.DropDownList("sPhylum",
                          (SelectList)ViewData["PhyRecID"],
                      "--Select One--",
                      new { onchange = "loadClasses(this);" }
                      )%>
</p>
<p id="pClass">
                <%= Html.Label("Class: ") %> <select id="sClass"></select>
</p>

Дело в том, что так же, как это работает, я передаю функцию количество классов в выбранном типе, и она отображает элемент pclass, проблема возникает, когда я пытаюсь заполнить слайс данными (которые должны содержать объекты, извлеченные из базы данных), потому что когда есть данные, возвращенные изменением базы данных, возвращайте Json (списки) вместо возврата Json (lists.count), я продолжаю получать ту же ошибку:

Обнаружена циклическая ссылка при сериализации объекта типа SubSonic.Schema.DatabaseColumn.

Я много раз отлаживал и делал тесты, но я не могу заставить его работать, и предполагается, что это простая вещь, но я что-то упускаю. Я прокомментировал цикл for, потому что я не совсем уверен, так ли вы обращаетесь к данным, потому что я не смог заставить его работать, когда он находит записи. Кто-нибудь может мне помочь?

Заранее спасибо, Victor

1 Ответ

0 голосов
/ 23 марта 2010

Наконец-то я решил эту проблему. Проблема заключалась в том, что JSON по какой-то причине не был способен отображать объекты, на которые есть ссылки, которые имеют проблемы с внешними ключами и прочим. Я создал новый класс только с нужными мне полями из базы данных и заполнил его оператором foreach. Затем я передал этот заполненный IList возвращенному Json, и это сработало ...

Спасибо всем за помощь, Victor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...