2010-08-09 267 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(測試)的一些其他的代碼部分顯示螢火蟲(火狐)的對象但是我無法訪問test.username或測試['用戶名]對象,他們只是返回undefined通過jQuery訪問對象

+0

您可以檢查螢火蟲,給我們的$ .ll.dvs_data – Nealv 2010-08-09 09:49:37

+0

你認真創建自己全額返還命名空間,像'jQuery'構造器一樣擴展是不好的業力。 – jAndy 2010-08-09 09:53:51

回答

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