У меня есть форма с опцией выбора, которая отображает некоторые параметры, я хочу получить выбранную опцию, чтобы отобразить ее в текстовом поле. Я использую AJAX для извлечения некоторых XML-данных для отображения в качестве параметров.AJAX асинхронный, вызывающий нулевое значение.
После отображения параметров, и когда я пытаюсь получить выбранную опцию, я получаю null
в асинхронном AJAX, но при синхронном вызове AJAX я получаю правильное значение.
Вот мой код:
function loadXML(url, callback){
$.ajax ({
type: "GET",
url: url,
cache: false,
async: true,
success: callback,
});
}
function displaySubjects(){
loadXML("subjects.xml", function(xml){
$(xml).find("subject").each(function(){
var courseCode = $(this).find("code")[0].textContent;
var courseTitle = $(this).find("title")[0].textContent;
$('#subject').append("<option value='" + courseCode + "'>" + courseCode + ": " +courseTitle + "</option>");
})
});
}
displaySubjects();
console.log($("#subject").val()); //Returns 'null'.
Как я могу это исправить?
Вы знаете, что означает «асинхронный», верно? Вы исправляете это, выполняя обработку в обратном вызове. – nnnnnn
@nnnnnn Вот что я сделал, я использую анонимную функцию в качестве обратного вызова. Это верно? – user3898380
Вы читаете значение вне обратного вызова! Это как есть пиццу перед тем, как человек доставки привезет ее в ваш дом. Поместите консоль.log в свой обратный вызов. – epascarello