jQuery Ajax:将json对象的范围设置为父函数

时间:2013-11-21 14:25:41

标签: jquery scope

我正在尝试将返回的对象从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?

我无法看清楚我在做什么。

谢谢

2 个答案:

答案 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为参数的回调函数。