jquery ajax应该调用testing(propertyLevelId)函数。
function name(roleId) {
$.ajax({
url: '../UserManagement/GetRoleLevel' + '/?roleId=' + roleId,
type: "POST",
dataType: "json",
contentType: 'application/json',
//async: false,
success: function (result) {
$.each(result, function (key, value) {
alert(value.Value);
propertyLevelId = value.Value;
testing(propertyLevelId);//It doesnt call the function
},
complete: function () { },
error: ServiceFailed// When Service call fails
});
}
function testing(propertyLevelId) {
alert(propertyLevelId);
}
答案 0 :(得分:2)
如果查看JavaScript控制台,您应该会看到语法错误,因为您的ajax块不完整。你永远不会完成你传递给each
的匿名函数以及each
调用中的结束paren和semi:
success: function (result) {
$.each(result, function (key, value) {
alert(value.Value);
propertyLevelId = value.Value;
testing(propertyLevelId);//It doesnt call the function
// ===> here <===
},
如果您始终缩进代码,这会有所帮助,因此您可以更轻松地查看这些拼写错误。
这是一个固定版本:
function name(roleId) {
$.ajax({
url: '../UserManagement/GetRoleLevel' + '/?roleId=' + roleId,
type: "POST",
dataType: "json",
contentType: 'application/json',
//async: false,
success: function (result) {
$.each(result, function (key, value) {
alert(value.Value);
propertyLevelId = value.Value;
testing(propertyLevelId);//It doesnt call the function
});
},
complete: function () { },
error: ServiceFailed// When Service call fails
});
}
作为旁注,除非你在一个未显示的封闭范围内的某个地方声明propertyLevelId
(我不是在谈论testing
同名的论点,我在谈论您在匿名success
函数中使用的变量时,您正在成为The Horror of Implicit Globals的牺牲品。