2013-03-08 68 views
0

我有這樣的代碼:jQuery的全局變量使用

var products = []; 

$(document).ready(function($){ 

    $.fn.load_products = function(){  
     $.getJSON('/restaurant/get_products',function(data){ 
      products = data[0]; 
      alert(products[0]['idProduct']);//this works fine   
     }); 
     // EDITED: alert was here, but was a mistake sorry 
    } 

    $.fn.draw_products = function(){ 
     alert(products[0]['idProduct']); //this doesn't work    
    } 

    $(this).load_products();  
    $(this).draw_products(); 
} 

我已經在全球範圍內聲明的產品,但它看起來像它的內部load_products重新定義一次。

當我執行它時,它說產品[0]是未定義的。

編輯:一些額外的信息。控制檯中的錯誤在警報執行後出現。

+0

我打算冒險猜測你的產品數組是空的。 – 2013-03-08 18:00:20

+0

嘗試將整個產品變量記錄到控制檯,它可能是您的產品數組爲空,並且您嘗試訪問元素,如果它。 – Ankit 2013-03-08 18:00:57

+0

看起來像異步加載問題 – 2013-03-08 18:01:00

回答

1

這是因爲draw_productsload_products的AJAX調用返回之前被調用。您需要在AJAX調用中的回調中調用draw_products

+1

那麼他怎麼說'load_products'中的'alert'工作 – 2013-03-08 18:04:02

+0

他是對的,錯誤出現在警報執行之前。 – beerLantern 2013-03-08 18:06:22

+0

我需要一個回調 – beerLantern 2013-03-08 18:06:55