我对此还很陌生,所以我会试着解释一下我在做什么。基本上,我想要的是根据前一个下拉列表的值加载一个下拉列表,我希望它加载数据并在另一个更改时出现。这是我在控制器中编写的代码:
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元素,当我试图用数据填充slist (应该包含从数据库检索的对象)时,问题就出现了,因为当数据库返回的数据更改为return Json(List)而不是return Json(lists.count)时,我总是得到相同的错误:
序列化'SubSonic.Schema.DatabaseColumn‘类型的对象时检测到循环引用。
我一直在反复调试和测试,但我不能让它工作,这应该是一件简单的事情,但我遗漏了一些东西。我对for循环进行了注释,因为我不太确定这是否是访问数据的方式,因为当它找到记录时,我无法使其工作。有谁可以帮我?
先谢谢你,维克多
发布于 2010-03-23 18:27:41
最后我解决了这个问题。问题是,由于某种原因,JSON不能显示相互引用的对象,这些对象在外键等方面存在问题。我只用数据库中需要的字段创建了一个新类,并用foreach语句填充它。然后我将填充的IList传递给return Json,它起作用了……
谢谢你的帮助,维克多
https://stackoverflow.com/questions/2469227
复制相似问题