2011-07-20 14 views
1

私はグローバル変数fan_coil_ai_biを持っていますが、その変数を使用して要求から取得したデータを格納しますが、len_1は1(この場合ok値)とlen_2は未定義です(なにが問題ですか)。私の機能はどうやって起こったのですか?そのlen_2の達成方法はlen_1のような同じ値ですか?このコードで何が問題になっていますか?GET return undefined value out関数

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_1が警告されているので、

len_2(応答あり)終了警告されている

  • len_2
  • に送信されています fan_coil_ai_bi.lengthがまだ定義されていません。

    これを解決する可能性はありません。依存関係をコールバックに移すという実用的な解決策がすでにあります。

    関連する問題