JQuery Ajax: установить область видимости объекта json для родительской функции

Я пытаюсь установить возвращаемый объект из вызова jQuery Ajax в область родительской функции (jQuery Ready).
Я, наверное, упускаю что-то очевидное, но сегодня я довольно устала и не могу этого найти.
В комментарии я дал несколько отзывов на console.logs.

Вот мой текущий код:

$(function () {
    var json_contracts; 
    var parent_id = $('#dropdown_parents').select2('data').id;         
    $.ajax({
        type: 'GET', 
        url: 'http://www.ingemployeebenefits.com/develop_kgy/entities/parents/db_parents_getcontracts.php',
        dataType: 'json', 
        data: {
            'parent_id': parent_id
        },
        success: function(data) {
            json_contracts = data;
            //This line returns the object properly 
            console.log(json_contracts); 
        }, 
        error: function (xhr,status,error) {
                   $('#msg_parent_view').html("Error: " + error);
                   return false;
                }
    });
    //This line returns undefined. 
    console.log(json_contracts); 
});

Я также проверил этот пост: установить глобальную переменную javascript в JSONresult?

Я не вижу, что я делаю по-разному.

Спасибо

2 ответа

Решение

Basic AJAX, ваша глобальная переменная назначается, но ваш console.log заявление возвращается undefined потому что он ударил до того, как ваш AJAX завершен. Либо делай свою логику внутри success функция или передать функцию обратного вызова, которая принимает ваш data в качестве параметра.

Это происходит потому что console.log() вызывается до завершения вызова ajax.

Добавьте обратный вызов, и он должен работать.

Пытаться:

$(function () {
    var json_contracts; 
    var parent_id = $('#dropdown_parents').select2('data').id;    
    function get_value(function(){
        console.log(json_contracts);
    });
    function get_value(callback){
        $.ajax({
            type: 'GET', 
            url: 'http://www.ingemployeebenefits.com/develop_kgy/entities/parents/db_parents_getcontracts.php',
            dataType: 'json', 
            data: {
            'parent_id': parent_id
            },
            success: function(data) {
                json_contracts = data;
                console.log(json_contracts); 
        }, 
           error: function (xhr,status,error) {
                   $('#msg_parent_view').html("Error: " + error);
                   return false;
                }
        });
    }        
});
Другие вопросы по тегам