我试图在console.log(area_id);
内设置变量值,但如果undefined
打印var area_id;
if (area.length > 1) {
$.ajax({
method: 'GET',
url: 'https://example.com/suggests/areas/?text=' + area
})
.done(function (response) {
area_id = response.items[0].id;
console.log(area_id);
});
}
console.log(area_id);
$(document).ready(function () {
"use strict";
var $body = $('body');
$('#search-form').submit(function (e) {
$(' #form-button ').attr("disabled", true);
var position = $(' #position ').val();
var area = $(' #area ').val();
var experience = $(' #experience ').val();
var period = $(' #period ').val();
var area_id;
if (area.length > 1) {
$.ajax({
method: 'GET',
url: 'https://example.com/suggests/areas/?text=' + area
})
.done(function (response) {
area_id = response.items[0].id;
console.log(area_id);
});
}
console.log(area_id);
/*console.log(position);
console.log(area_id);
console.log(experience);
console.log(period);*/
if (position && (position.length > 1) && experience && period && area_id) {
$.ajax({
method: 'GET',
url: 'https://example.com/vacancies/?text=' + position + '&area=' + area_id + '&experience=' + experience + '&period=' + period,
success: function (response) {
console.log(response);
}
});
} else {
$('#result').html('').append('<p class="text-danger">Error</p>');
}
$(' #form-button ').attr("disabled", false);
e.preventDefault();
});
我猜这是范围的一些问题,但我不明白如何解决它?
UPD 完整的脚本
xhr.addEventListener("load ", e => { code }.
});
答案 0 :(得分:3)
我不认为这是一个范围问题。当done
请求完成后,系统会调用GET
回调。但是,由于异步执行,将在此之前调用console.log(area_id)
语句。您可以删除最后一个日志语句,只依赖done
回调中的那个。