使用 ajax 在 asp.net mvc 中级联两个下拉列表不起作用
Cascading two dropdowns in asp.net mvc using ajax not working
我试图在选择城市后在下拉列表中显示教练列表。这是我的 2 个下拉菜单;
<td>
<select id="ddlCity" class="form-control" onchange="getCoaches();">
@foreach (var item in ViewBag.Cities)
{
<option value="@item.id">@item.City_Name</option>
}
</select>
</td>
<td>
<select id="ddlCoach" class="form-control">
</select>
</td>
这里是returns教练列表的函数。一切正常,returns教练名单;
[HttpPost]
public JsonResult getCoaches(string cityId)
{
int intcityId = Convert.ToInt32(cityId);
var coaches = db.tbl_Coordinators.Where(x => x.fk_cityid == intcityId).ToList();
return Json(coaches);
}
这里是ajax代码。相反,它没有填充教练下拉列表,而是跳转到错误。
function getCoaches(){
$('#ddlCoach option').remove();
alert('in function');
var selected_City = $("#ddlCity :selected").text();
var selected_City_Value = $("#ddlCity :selected").val();
alert(selected_City_Value);
$.ajax({
type: "POST",
url: "/Admin/getCoaches",
datatype: "Json",
data: { cityId: selected_City_Value },
success: function (data) {
debugger;
console.log(data);
alert('success' + data);
$.each(data, function (index, value) {
$('#ddlCoach').append('<option value="' + value.id + '">' + value.Cordinator_Name + '</option>');
});
}
,error: function(jqXHR, status,err){
alert("Error");
}
});
}
我尝试过很多其他解决方案,但 none 都行得通。我想 ajax 代码有问题,我不知道如何调试它。
首先编写你的getCoaches
控制器POST
方法如下:
[HttpPost]
public JsonResult getCoaches(int cityId)
{
var coaches = db.tbl_Coordinators.Where(x => x.fk_cityid == cityId).ToList();
var coachSelectList = new SelectList(coaches , "Id", "Cordinator_Name"); // ensure that your coach model class primary key name is `Id`
return Json(coachSelectList);
}
然后写下你的GetCoaches
javaScript方法如下:
function getCoaches(){
var ddlCoachSelector = $('#ddlCoach');
ddlCoachSelector.empty();
var selectedCity = $("#ddlCity").val();
$.ajax({
type: "POST",
url: "/Admin/getCoaches",
data: { cityId: selectedCity },
success: function (data) {
if(data.length> 0){
ddlCoachSelector.append($("<option>").val("").text("Select Coach"));
$(data).each(function(index, item) {
ddlCoachSelector.append($("<option>").val(item.Value).text(item.Text));
});
} else{
ddlCoachSelector.append($("<option>").val("").text("Coach list empty!"));
}
},
error: function(jqXHR, status,err){
alert("Error");
}
});
}
希望对你有用。
我试图在选择城市后在下拉列表中显示教练列表。这是我的 2 个下拉菜单;
<td>
<select id="ddlCity" class="form-control" onchange="getCoaches();">
@foreach (var item in ViewBag.Cities)
{
<option value="@item.id">@item.City_Name</option>
}
</select>
</td>
<td>
<select id="ddlCoach" class="form-control">
</select>
</td>
这里是returns教练列表的函数。一切正常,returns教练名单;
[HttpPost]
public JsonResult getCoaches(string cityId)
{
int intcityId = Convert.ToInt32(cityId);
var coaches = db.tbl_Coordinators.Where(x => x.fk_cityid == intcityId).ToList();
return Json(coaches);
}
这里是ajax代码。相反,它没有填充教练下拉列表,而是跳转到错误。
function getCoaches(){
$('#ddlCoach option').remove();
alert('in function');
var selected_City = $("#ddlCity :selected").text();
var selected_City_Value = $("#ddlCity :selected").val();
alert(selected_City_Value);
$.ajax({
type: "POST",
url: "/Admin/getCoaches",
datatype: "Json",
data: { cityId: selected_City_Value },
success: function (data) {
debugger;
console.log(data);
alert('success' + data);
$.each(data, function (index, value) {
$('#ddlCoach').append('<option value="' + value.id + '">' + value.Cordinator_Name + '</option>');
});
}
,error: function(jqXHR, status,err){
alert("Error");
}
});
}
我尝试过很多其他解决方案,但 none 都行得通。我想 ajax 代码有问题,我不知道如何调试它。
首先编写你的getCoaches
控制器POST
方法如下:
[HttpPost]
public JsonResult getCoaches(int cityId)
{
var coaches = db.tbl_Coordinators.Where(x => x.fk_cityid == cityId).ToList();
var coachSelectList = new SelectList(coaches , "Id", "Cordinator_Name"); // ensure that your coach model class primary key name is `Id`
return Json(coachSelectList);
}
然后写下你的GetCoaches
javaScript方法如下:
function getCoaches(){
var ddlCoachSelector = $('#ddlCoach');
ddlCoachSelector.empty();
var selectedCity = $("#ddlCity").val();
$.ajax({
type: "POST",
url: "/Admin/getCoaches",
data: { cityId: selectedCity },
success: function (data) {
if(data.length> 0){
ddlCoachSelector.append($("<option>").val("").text("Select Coach"));
$(data).each(function(index, item) {
ddlCoachSelector.append($("<option>").val(item.Value).text(item.Text));
});
} else{
ddlCoachSelector.append($("<option>").val("").text("Coach list empty!"));
}
},
error: function(jqXHR, status,err){
alert("Error");
}
});
}
希望对你有用。