Javascript 无法使用Ajax将控制器中的数据列表返回到视图中的下拉列表。我得到了未定义的错误
我试图使用Ajax调用从控制器中恢复下拉列表的值,它将数据返回到success方法。但我在下拉列表中看不到文本或值 这是我的控制器代码,在底部,我返回ListofTeam查看Javascript 无法使用Ajax将控制器中的数据列表返回到视图中的下拉列表。我得到了未定义的错误,javascript,jquery,json,ajax,asp.net-mvc,Javascript,Jquery,Json,Ajax,Asp.net Mvc,我试图使用Ajax调用从控制器中恢复下拉列表的值,它将数据返回到success方法。但我在下拉列表中看不到文本或值 这是我的控制器代码,在底部,我返回ListofTeam查看 List<SelectListItem> listoftime = new List<SelectListItem>(); if (duration == 1) { for(int i=9;i<23;i++)
List<SelectListItem> listoftime = new List<SelectListItem>();
if (duration == 1)
{
for(int i=9;i<23;i++)
{
var st = date.Where(m => m.StartTime.Value.Hours == i);
int countst = st.Count();
if(countst==1)
{
var et = st.Select(m => m.Endtime.Value.Hours).SingleOrDefault();
i = Convert.ToInt32(et);
}
if(countst==0)
{
listoftime.Add(new SelectListItem
{
Text = "\"" + i + " to " + (i + 1) + "\"",
Value = i.ToString()
});
}
}
}
return Json(new { result = listoftime, status = "Success" },
JsonRequestBehavior.AllowGet);
}
List listoftime=new List();
如果(持续时间==1)
{
for(int i=9;i m.StartTime.Value.Hours==i);
int countst=st.Count();
如果(countst==1)
{
var et=st.Select(m=>m.Endtime.Value.Hours);
i=转换为32(et);
}
如果(countst==0)
{
添加(新建SelectListItem)
{
Text=“\”“+i+”到“+(i+1)+”\”,
Value=i.ToString()
});
}
}
}
返回Json(新的{result=listoftime,status=“Success”},
JsonRequestBehavior.AllowGet);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@DropDownListFor(m=>m.ScheduledTime,新列表
{
新建SelectListItem{Text=“09:00AM”,Value=“09:00”},
新建SelectListItem{Text=“10:00 AM”,Value=“10:00”},
新建SelectListItem{Text=“11:00AM”,Value=“11:00”},
新建SelectListItem{Text=“12:00 AM”,Value=“12:00”},
新建SelectListItem{Text=“13:00 PM”,Value=“13:00”},
新建SelectListItem{Text=“14:00 PM”,Value=“14:00”},
新建SelectListItem{Text=“15:00 PM”,Value=“15:00”},
新建SelectListItem{Text=“16:00 PM”,Value=“16:00”},
新建SelectListItem{Text=“17:00 PM”,Value=“17:00”},
新建SelectListItem{Text=“18:00 PM”,Value=“18:00”},
新建SelectListItem{Text=“19:00 PM”,Value=“19:00”},
新建SelectListItem{Text=“20:00 PM”,Value=“20:00”},
新建SelectListItem{Text=“21:00 PM”,Value=“21:00”},
新建SelectListItem{Text=“22:00 PM”,Value=“22:00”}
},“--选择开始时间--”,新建{@class=“form control”,id=“stime”})
@Html.ValidationMessageFor(model=>model.ScheduledTime,“,new{@class=“text danger”})
因为您返回的文本和值(大写字母第一个字符)
每个使用2个参数索引
和项
,第二个参数项对象应将名称更改为val
,而不是在每个循环中与值
变量重复
将val.Value
设置为Value属性,将val.Text
设置为Text
使用value.result,因为MVC操作中返回的Json包含2个属性
你可以换成
$.each(value.result, function (key, val) {
alert(val.Text + val.Value);
$('#stime')
.append($("<option></option>")
.attr("value", val.Value)
.text(val.Text));
});
$。每个(值、结果、函数(键、值){
警报(val.Text+val.Value);
$('stime')
.append($(“”)
.attr(“值”,val.value)
.text(val.text));
});
谢谢Hien的快速回答。我添加了这段代码,但仍然在警报中得到了未定义的值,也在console.log中。下拉列表为空