Надеюсь, заголовок этого вопроса несколько ясен, я не мог понять, как точно изложить мою проблему.В основном у меня есть 3 функции.
Функция A:
function validUsername(){
if(username.element.value.length > 0){
if(checkData(username)){
showMessage(username, true);
}else{
showMessage(username, false, 'Username Already In Use');
}
}
}
В основном это поле использует AJAX для проверки того, что имя пользователя еще не существует в базе данных.Он использует checkData (имя пользователя) для получения возвращенного логического значения true или false и определения необходимости отображения положительного или отрицательного ответа.
Функция B (checkData (username)):
function checkData(obj){
var field = getFieldValue(obj.container);
if(field.length != 1){
field = null;
}
if(xmlObj != null) {
xmlObj.open("POST", obj.servletUrl, true);
xmlObj.onreadystatechange = function() { handleServerResponse(obj.container); };
xmlObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlObj.send("field=" + field); //Post username to Servlet
}
}
Это отвечает за создание запроса AJAX и т. Д. Когда запрос готов, использует handleServerResponse для отображения сообщения на экране.
Функция C (handleServerResponse):
function handleServerResponse(container){
var response = xmlObj.responseText;
if(xmlObj.readyState == 4) {
if(xmlObj.status == 200){
if(response.indexOf('null') != -1){
return true;
}else{
return false;
}
}
}
}
Функция C возвращает логическое значение, но как мне также вернуть это логическое значение обратно в функцию B, чтобы функция A могла получить ответ?Я пытался:
xmlObj.onreadystatechange = function() { return handleServerResponse(obj.container);
return xmlObj.onreadystatechange; //Function B would return this.
Но это не работает должным образом.Я также думал о том, чтобы установить глобальную переменную, например, serverResponse = true, и затем вернуть этот ответ из функции B, но другие объекты также используют эту функцию, поэтому мне потребуется способ ее сброса после каждого использования.