У меня есть два элемента select. Я попытался очистить свой старый код, сделав некоторые переменные глобальными.Не удается получить значение из глобальной переменной
прежде чем я успел что-то вроде этого:
var user = $('#my_SiteUsers').val();
Проблема в том, что теперь я мог получить только значение из этой переменной, в другое время я, возможно, потребуется что-то вроде innerHTML, и я предпочел бы не должны создайте для этого новую переменную.
Итак, я создал глобальную переменную, называемую пользователем.
начато с document.ready.Но теперь мой пользователь и группа переменных не дают мне значения, которые мне нужны. Например, предупреждения являются триггерами, поскольку опция по умолчанию не подбирается. Извините, если вопрос непонятен. Я могу опубликовать старый код, если это поможет.
$(document).ready(function(){
user = $('#my_SiteUsers');
group = $('#my_SiteGroups');
groupsAssigned = $("#my_SPGroupsAssigned");
groupAvailable = $("#my_SPGroupsAvailable");
userAssigned = $("#my_SPUsersAssigned").html("");
userAvailable = $("#my_SPUsersAvailable").html("");
$("button").click(function() { return false; });
populate();
});
function populate() {
//Populate the user list
strHTMLSiteUsers = "";
$().SPServices({
operation: "GetUserCollectionFromSite",
async: true,
completefunc: function(xData, Status) {
$(xData.responseXML).find("User").each(function() {
strHTMLSiteUsers += "<option value='" + $(this).attr("LoginName") + "'>" + $(this).attr("Name") + "</option>";
});
user.append(strHTMLSiteUsers);
}
});
if (user.val() == "default"){
//don't do anything
}else{
//if a user is selected, run
RefreshGroupLists();
}
//Populate the group list
strHTMLSiteGroups = "";
$().SPServices({
operation: "GetGroupCollectionFromSite",
async: true,
completefunc: function(xData, Status) {
$(xData.responseXML).find("Group").each(function() {
strHTMLSiteGroups += "<option value='" + $(this).attr("Name") + "'>" + $(this).attr("Name") + "</option>";
});
group.append(strHTMLSiteGroups);
}
});
if (group.val()=="default"){
//don't do anything
}else{
//if a user is selected, run
RefreshUserLists();
}
}
JSFiddle: http://jsfiddle.net/JevpS/
должен ли я установить async на false? – Batman
Это считается нежелательным, так как браузер замерзнет, пока не вернется синхронный вызов ajax. Обычная практика заключается в том, чтобы поставить код, который зависит от результата асинхронного вызова в обработчике 'complete' или' success'. – Igor
Ну ладно, поэтому внутри «completefunc», хорошо, я удалил списки обновления, которые запускались на document.ready, так что проблема решена. Спасибо. – Batman