2010-08-09 2 views
0
var url_string = '/index.php/dvs/get_dvs/' + id + '/'; 
     $.ll = {}; 
     $.ll.dvs_data = {}; 
     $.post(url_string,{}, 
     function (data) 
     { 
       $.each(data.dvs, function(k,v) { 
       $.each(v, function(dvs_name, dvs_value) { 

        $.ll.dvs_data[dvs_name] = dvs_value; 

       }); 
      }); 

     }, "json"); 

     var test = $.ll.dvs_data; 
     console.log(test['username']); 
     console.log(test.username); 
     console.log(test); 

выше является частью какой-либо другой код, данные поступают в console.log (тест) отображает объект в Firebug (Firefox), однако я не в состоянии получить доступ к test.username или test ['username], они просто возвращаются как неопределенныеДоступ к объекту с помощью JQuery

+0

вы можете проверить поджигатель и дать нам полный возврат $ .ll.dvs_data – Nealv

+0

вы серьезно создать свой собственный пространство имен, дополняющее конструктор 'jQuery', как плохая карма. – jAndy

ответ

2

Это распространенная ошибка, когда дело касается AJAX. Пост-вызов является асинхронным, то есть он будет продолжать запускать код после него, даже до получения ответа от сервера.

Любой код, который зависит от ответа от сервера должен пойти внутри функции обратного вызова:

$.post(url_string,{}, 
    function (data) 
    { 
     $.each(data.dvs, function(k,v) { 
      $.each(v, function(dvs_name, dvs_value) { 

       $.ll.dvs_data[dvs_name] = dvs_value; 

      }); 
     }); 

     // Move your code up here 
     var test = $.ll.dvs_data; 
     console.log(test['username']); 
     console.log(test.username); 
     console.log(test); 

    }, "json"); 
Смежные вопросы