Uncaught RangeError: Maximum call stack size exceeded - Asp.net Mvc DropDown Binding With Web Api
Uncaught RangeError: Maximum call stack size exceeded - Asp.net Mvc DropDown Binding With Web Api
我正在尝试将级联下拉列表与 asp.net mvc 和 web api 绑定。
Web api 运行良好。我的控制器 class 返回值。我怀疑 jquery 有一些错误。我用邮递员测试了我的控制器。我得到了一些值。选择父下拉列表后,我收到此错误 "Uncaught RangeError: Maximum call stack size exceeded"
public JsonResult GetirBolumler(int fakID)
{
List<Core.ViewModel.BolumViewModel> bolumler = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://www.myapiaress.com");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("api/Danismanlik/ListeleBolum?FakulteID=" + fakID).Result;
if (response.IsSuccessStatusCode)
{
bolumler = response.Content.ReadAsAsync<List<Core.ViewModel.BolumViewModel>>().Result;
}
}
return Json(new SelectList(bolumler, "ID", "Ad"));
}
和jquery在查看页面
<script type="text/javascript">
$(document).ready(function () {
//BÖLÜMLER DROP DOWN DOLDUR
$("#ddlFakulteler").change(function () {
alert('1');
$("#ddlBolumler").empty();
$.ajax({
type: 'POST',
url: '@Url.Action("GetirBolumler")',
dataType: 'json',
data: { fakID: $("#ddlFakulteler").val() },
success: function (bolumler) {
$.each(bolumler, function (i, bolum) {
$("#ddlBolumler").append('<option value="' + bolum.ID + '">' + bolum.AD + '</option>');
alert('3');
});
alert('2');
},
error: function (ex) {
alert('Bölüm getirme hatası.' + ex);
}
});
return false;
})
//BÖLÜMLER DROP DOWN DOLDUR
</script>
即将清空值。
这样解决了
我改变了这一行
data: { fakID: $("#ddlFakulteler").val() },
到
data: { fakID: fakulteID }, //fakID goes to controller
并放置这些行
var e = document.getElementById("ddlFakulteler");
var fakulteID = e.options[e.selectedIndex].value;
这一行之后
$("#ddlFakulteler").change(function () {
我正在尝试将级联下拉列表与 asp.net mvc 和 web api 绑定。
Web api 运行良好。我的控制器 class 返回值。我怀疑 jquery 有一些错误。我用邮递员测试了我的控制器。我得到了一些值。选择父下拉列表后,我收到此错误 "Uncaught RangeError: Maximum call stack size exceeded"
public JsonResult GetirBolumler(int fakID)
{
List<Core.ViewModel.BolumViewModel> bolumler = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://www.myapiaress.com");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("api/Danismanlik/ListeleBolum?FakulteID=" + fakID).Result;
if (response.IsSuccessStatusCode)
{
bolumler = response.Content.ReadAsAsync<List<Core.ViewModel.BolumViewModel>>().Result;
}
}
return Json(new SelectList(bolumler, "ID", "Ad"));
}
和jquery在查看页面
<script type="text/javascript">
$(document).ready(function () {
//BÖLÜMLER DROP DOWN DOLDUR
$("#ddlFakulteler").change(function () {
alert('1');
$("#ddlBolumler").empty();
$.ajax({
type: 'POST',
url: '@Url.Action("GetirBolumler")',
dataType: 'json',
data: { fakID: $("#ddlFakulteler").val() },
success: function (bolumler) {
$.each(bolumler, function (i, bolum) {
$("#ddlBolumler").append('<option value="' + bolum.ID + '">' + bolum.AD + '</option>');
alert('3');
});
alert('2');
},
error: function (ex) {
alert('Bölüm getirme hatası.' + ex);
}
});
return false;
})
//BÖLÜMLER DROP DOWN DOLDUR
</script>
即将清空值。
这样解决了
我改变了这一行
data: { fakID: $("#ddlFakulteler").val() },
到
data: { fakID: fakulteID }, //fakID goes to controller
并放置这些行
var e = document.getElementById("ddlFakulteler");
var fakulteID = e.options[e.selectedIndex].value;
这一行之后
$("#ddlFakulteler").change(function () {