【发布时间】:2014-08-24 05:47:15
【问题描述】:
我正在尝试在成功函数中进行 ajax 调用。在第二个 ajax 调用中,我将一些数据附加到隐藏字段。就在 for 循环之后,警报显示隐藏字段包含数据,但是当我将警报放在 secod ajax 调用之外时,它显示为空。为什么隐藏字段会被清除?
<input type="hidden" id="hdnMenuChild" name="hdnMenuChild" />
<script>
function loadMenue() {
var url = "/UserManagement/GetUserMenue";
$.ajax({
type: "GET",
url: url,
contentType: "application/json; charset=utf-8",
//data: { initialApplicantID: initialApplicantID },
dataType: "json",
success: function (data) {
var mUL = "";
for (var x = 0; x < data.length; x++) {
if (data[x].MenueLevel == "0" && data[x].URL!="#") {
mUL = mUL + '<li>';
mUL = mUL + '<a href=' + data[x].URL + '>';
mUL = mUL + '<span class="menu-text">' + data[x].Name + '</span>';
mUL = mUL + '</a></li>';
}
if (data[x].MenueLevel == "0" && data[x].URL == "#") {
mUL = mUL + '<li>';
mUL = mUL + '<a href=' + data[x].URL + ' class="dropdown-toggle">';
mUL = mUL + '<span class="menu-text">' + data[x].Name + '</span>';
mUL = mUL + '<b class="arrow icon-angle-down"></b>';
mUL = mUL + '</a>';
mUL = mUL + '<ul class="submenu">';
$.ajax({
type: "GET",
url: "/UserManagement/GetUserMenue?parentID=" + data[x].PermissionID,
contentType: "application/json; charset=utf-8",
//data: { initialApplicantID: initialApplicantID },
dataType: "json",
success: function (datay) {
for (var y = 0; y < datay.length; y++) {
$("#hdnMenuChild").val($("#hdnMenuChild").val() + '<li>');
$("#hdnMenuChild").val($("#hdnMenuChild").val() + '<a href=' + datay[y].URL + '>');
$("#hdnMenuChild").val($("#hdnMenuChild").val() + '<i class="icon-double-angle-right"></i>');
$("#hdnMenuChild").val($("#hdnMenuChild").val() + datay[y].Name);
$("#hdnMenuChild").val($("#hdnMenuChild").val() + '</a></li>');
}
alert($("#hdnMenuChild").val());//here, alert shows data.
}
});
alert($("#hdnMenuChild").val());//alert shows empty data here
mUL = mUL + '</ul>';
mUL = mUL + '</li>';
}
}
$("#userMenue").html(mUL);
}
});
}
【问题讨论】:
-
因为当时还没有发出第二个 ajax 调用的警报。 ajax 调用是异步的,因此在完成后需要发生的任何事情都需要进入成功回调。
标签: javascript jquery ajax jquery-ui