我有控制器
var subCategories = m_listsRepository.GetSubCategories(id);
var items = subCategories.Select(x=>new MyDataNameAndId(){Id = x.Value, Name = x.Text});
return Json(items);
和ajax:
$.ajax({
url: urlString,
type: 'POST',
data: JSON.stringify({ id: districtId }),
dataType: 'json',
contentType: 'application/json',
cache: 'false',
success: function (data) {
alert("success");
$.each(data, function (key, MyDataNameAndId) {
alert(key);//== 0
alert(MyDataNameAndId);// then throws
$('select#ChangeOnsubCategoryId').append('<option value="0">Select One</option>');
$.each(MyDataNameAndId, function (index, manager) {
$('select#ChangeOnsubCategoryId').append(
'<option value="' + manager.Id + '">'
+ manager.Name +
'</option>');
});
});
}
});
我做错了什么?
更新 控制器工作。 警报( “成功”); - 是节目 警告(重点); - 显示0 警报(MyDataNameAndId); - 不显示。 我需要从select#ChangeOnsubCategoryId
中选择'select#ChangeOnsubCategoryId'选项这是怎么回事?这个明白吗?
我不知道如何显示传递了json的内容
json string:
[{"Id":"53","Name":"футбол"}]
答案 0 :(得分:0)
从你写的JSON输出中,我有点像这样重写:
$.ajax({
url: urlString,
type: 'POST',
data: JSON.stringify({ id: districtId }),
dataType: 'json',
contentType: 'application/json',
cache: 'false',
success: function (data) {
if (!data) return; // if data is empty, return
var $select = $('select#ChangeOnsubCategoryId');
// put the select element in a variable so you don't need to
// jquery select it again
$select.append('<option value="0">Select One</option>');
// I guess you first want to add a "select one" option
// data should be an array e.g. [{"Id":"53","Name":"футбол"}]
$.each(data, function (key, manager) {
// for each "manager" in the "data" array
// manager should be an object in the data
// array e.g. {"Id":"53","Name":"футбол"}
// no need to for each it
$select.append(
'<option value="' + manager.Id + '">'
+ manager.Name +
'</option>');
// add the manager in the select box
});
}
});
我假设的东西。使用javascript调试器(例如Chrome中的开发人员工具或Firefox中的Firebug)来检查从ajax调用中获得的值。将断点放在函数内部,然后观察数据变为什么(在这种情况下,它应该是包含Id和Name的对象数组)。
答案 1 :(得分:0)
$.each(MyDataNameAndId, function (index, manager) {
$('select#ChangeOnsubCategoryId').append(
'<option value="' + manager.Id + '">'
+ manager.Name +
'</option>');
});
应该只是
$('select#ChangeOnsubCategoryId').append(
'<option value="' + MyDataNameAndId.Id + '">'
+ MyDataNameAndId.Name +
'</option>');
示例代码对我有用,没有例外,这让我相信返回的JSON有问题。检查它是否实际返回您发布的字符串。