2013-11-21 2 views
0

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

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

$(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?

Я не могу видеть, что я делаю diffferently.

Благодаря

+0

_____Ok, он получил – Trace

ответ

0

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

+0

право, что это его явно. Спасибо, я соглашусь через несколько минут – Trace

1

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

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

Try:

$(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; 
       } 
     }); 
    }   
}); 
+0

Прохладный, я поддержал ваш ответ, но понял, что он уже понял; Я соглашусь ответить tymeJV, поскольку он был первым. благодаря – Trace

Смежные вопросы