【发布时间】:2016-12-01 23:29:26
【问题描述】:
我有一个下拉列表,我需要根据另一个选择动态填充该下拉列表。这一切都有效,以至于我必须先清除列表后在下拉列表中呈现新数据。列表清除,但无法填充从控制器返回的新数据。我正在尝试为此使用 .each。
这是有问题的控制器方法:
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult UpdateDocumentSubType(string DocumentType)
{
List<SelectListItem> DocumentSubTypeList = new List<SelectListItem>();
PropertyModel model = new PropertyModel();
int DocTypeID = 0;
//get DocTypeID
DocTypeID = model.GetDocTypeID(DocumentType);
//gets new document subtype list
DocumentSubTypeList = model.GetDocumentSubTypes(DocTypeID);
//return document subtype list
return Json(DocumentSubTypeList, JsonRequestBehavior.AllowGet);
}
如您所见,我返回的是 List 的序列化 json 结果。
在观点上,我有以下几点:
$.ajax({
url: '@Url.Action("UpdateDocumentSubType","Document")',
type: 'GET',
dataType: "json",
data: { DocumentType: SelectedDocTypeText },
async: true,
success: function (data) {
var select = $("#Docs_DocumentSubTypeID");
select.empty();
$.each(data, function (index, item) {
select.append($('<option></option>').val(item).html(index));
});
}
});
这就是一切崩溃的地方。代码命中 select.empty(): 并成功执行,但作为 SelectListItem 的“文本”值,它改为提供对象数组的索引元素。本质上,标签呈现如下内容:
<option value="[object Object]">1</option>
<option value="[object Object]">2</option>
<option value="[object Object]">3</option>
<option value="[object Object]">4</option>
我已验证数据正在传递。当我将 .each 放入自己的函数中时,调用该函数并添加“调试器;”对于它,我可以将生成的“数据”中的数据视为 [object, object] 的四个元素。
您可能已经猜到了,JQuery 不是我的强项,因此我们将不胜感激。 :)
【问题讨论】:
-
您在
data中得到了什么。你能把它花在你的问题上吗
标签: javascript jquery json asp.net-mvc