我正在尝试将返回的对象从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);
});
我还查看了这篇文章:Set javascript global variable to JSONresult?
我无法看清楚我在做什么。
谢谢
答案 0 :(得分:1)
这是因为在ajax调用完成之前调用了console.log()
。
添加回调,它应该可以正常工作。
尝试:
$(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;
}
});
}
});
答案 1 :(得分:0)
基本AJAX,正在分配您的全局变量,但您的console.log
语句返回undefined
,因为它在您的AJAX完成之前被命中。要么在success
函数中执行逻辑,要么传入一个以data
为参数的回调函数。