jQuery在if里面设置变量值

时间:2018-03-21 07:53:46

标签: jquery

我试图在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 }.

});

1 个答案:

答案 0 :(得分:3)

我不认为这是一个范围问题。当done请求完成后,系统会调用GET回调。但是,由于异步执行,将在此之前调用console.log(area_id)语句。您可以删除最后一个日志语句,只依赖done回调中的那个。