2011-07-20 51 views
1

我有全局變量fan_coil_ai_bi,並且我使用該變量來存儲我從請求中獲得的一些數據,但問題是len_1是1(在這種情況下什麼是ok值),len_2未定義(哪裏不對)。在我的功能波紋管中發生了什麼?如何實現len_2與len_1具有相同的值?這段代碼有什麼問題?GET返回未定義值輸出函數

function read_required_fields(fan_coil_id) { 
    var parameters = {}; 

    parameters['command'] = 'read_required_fields'; 
    parameters['fan_coil_id'] = fan_coil_id; 

    $.get("php_scripts/network_script.php", parameters, function(data) { 
     fan_coil_ai_bi=data; 
     alert('len_1='+fan_coil_ai_bi.length); 
    }, "json"); 
    alert('len_2='+fan_coil_ai_bi.length); 
} 

回答

3

異步JavaScript和XML是異步

get方法的意思是「做一個HTTP獲取請求,當它得到一個響應,做到這一點」。

它不會暫停執行該函數,直到HTTP響應到達。

如果您想對數據做任何事情,請在回調函數(或您從其調用的函數)中執行

$.get("php_scripts/network_script.php", parameters, function(data) { 
    fan_coil_ai_bi=data; 
    alert('len_1='+fan_coil_ai_bi.length); 
    alert('len_2='+fan_coil_ai_bi.length); 
}, "json"); 
+0

+1第一句話:) – pimvdb

2

您可能想了解異步代碼。在你的情況,發生的事情是:

  1. 請求被髮送
  2. len_2被驚動
  3. 請求完成(有響應),len_1被驚動

所以當len_2正在提醒,fan_coil_ai_bi.length尚未定義。

有沒有可能解決這個問題;相反,您已經有了一個可行的解決方案:將依賴關係移入回調。