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;
}
});
}
});