【发布时间】:2016-06-28 13:28:06
【问题描述】:
我在 ahref 链接上使用以下函数作为 onclick 事件:
function checkOrgSaved() {
var orgName = $.trim($("#orgName").val());
var orgNames = new Array();
$.getJSON("organizations?action=getOrganizations&onlyName=true&CSRFToken=" + csrf_token, function (result) {
for (var i = 0; i < Object.keys(result.Orgs).length; i++) {
var org = result.Orgs[i].name;
orgNames.push(org);
}
});
if ($.inArray(orgName, orgNames) == -1 || orgName == 0){
alert("Foobar.");
$("#editLink").attr("href", "javascript:void(0);");
}
}
像这样,if 语句中的orgNames 数组始终为空。为什么?
但是,如果我在getJSON 调用中声明orgNames 数组并将if 语句也放在getJSON() 调用中,则数组填充正确,但$("#editLink").attr("href", "javascript:void(0);"); 行不起作用并且通过单击 ahref 元素执行重定向。
我想要实现的是:如果 orgName 为空或不在 orgNames 数组中,则应抛出 JS 警报 - 无需在其他页面上重定向。
【问题讨论】:
-
JS 不会等待异步函数完成,它会跳到你的 if 块。将 if 块移到 for 循环下方的 getJSON 中。
标签: javascript jquery scope