我的 _Layout.cshtml
@Html.DropDownList("myList",
new SelectList(apps, "AppId", "Name", ViewBag.AppId),
new {@class = "mySelectBox", onchange = "updateAppLayout(this);"})
javscript函数在单独的.js文件中:
function updateAppLayout(sel) {
var name = sel.options[sel.selectedIndex].text;
var appId = sel.options[sel.selectedIndex].value;
var data = { "appname": name, "appId": appId };
var url = "/Test/TestLayout";
$.post(url, data)
.done(function(msg) {})
.fail(function (xhr, status, error) {
});
}
每当我更快地更改下拉值时,都会调用 .fail()
方法。我在 .fail()
方法中放置了一个控制台,用于 sel 值,它给出了这个值 - >的 select#myList.mySelectBox
但如果我在 $.post
方法之前有控制台,我会得到下拉列表。
不知道这里有什么不对。
PS:我不想使用 setTimeout
答案 0 :(得分:0)
我会在加载时禁用选择列表,这样你就可以确保它只会在第一个返回时获得新值
function updateAppLayout(sel) {
var name = sel.options[sel.selectedIndex].text;
var appId = sel.options[sel.selectedIndex].value;
document.getElementById("myList").disabled = true;
var data = { "appname": name, "appId": appId };
var url = "/Test/TestLayout";
$.post(url, data)
.done(function(msg) {
document.getElementById("myList").disabled = false;
//do something
})
.fail(function (xhr, status, error) {
});
}