【发布时间】:2010-03-18 11:00:43
【问题描述】:
我还是新手,所以我会尝试解释我在做什么。基本上我想要的是根据前一个的值加载一个下拉列表,我希望它加载数据并在另一个更改时出现。这是我在控制器中编写的代码:
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(lists) 而不是 return Json(lists.count) 我不断收到相同的错误:
在序列化“SubSonic.Schema.DatabaseColumn”类型的对象时检测到循环引用。
我一直在进行调试和测试,但我无法让它工作,这应该是一件简单的事情,但我错过了一些东西。我评论了 for 循环,因为我不太确定这是否是您访问数据的方式,因为当它找到记录时我无法使其工作。谁能帮帮我?
提前致谢, 维克多
【问题讨论】:
-
错误是什么?调用是否成功,您可以单步执行控制器方法吗?
-
是的,它通过控制器方法,显然列表计数为0,所以我可能在sql部分做错了,我会看看它,但无论如何,使用这段代码,它不应该至少加载带有“全选”选项的下拉 sClass 吗?错误已解决,这是一个很奇怪的错误,但这是因为我调用了错误的函数,虽然不是很具体,但我想通了。谢谢:)
-
所以你有一个 ID = "sClass" 的选择列表??? (只是想验证)
-
另外,您不想使用
.add(newOptionObj, index)和.remove(index)方法在您的选择列表中添加/删除选项吗? -
是的,我有 ID sclass,一开始我只想看到选项加载,并且一旦有这个工作填充它。
标签: c# javascript asp.net-mvc asp.net-ajax