2011-09-16 23 views
0

私は設定ファイルをロードする関数を持っています。返されるデータがあるかどうかをチェックする必要があります。設定ファイルが存在しないことを警告する必要があります。Javascript変数がリセットされるべきでないときにリセットされる

ここに私のコードです。

// Get JSON data from server 
    result = false; 
function loadData(id) { 
    $.get("modules/device/loadConfigurationData.php", { 
     id : id 
    }, function(response) {  
     for (var i =0; i < response.length -1; i++) 
      if (response[i]) 
      { 
       settings[response[i].setting_name] = response[i].setting_value;  
       result = true; 
      } 
      else 
      { 
       result = false; 
      }      
    }, 'json'); 
} 

ここに、設定ファイルを読み込む関数があります。せ、それ以外の場合はfalseを返す必要があり、その設定ファイルはCONFIG 1とCONFIG 2用dexistを行いますが、データが存在する場合、これは、コンフィギュレーション・データをロードする必要があります。4.

// Load Configuration 1 
function config1() { 
    loadData(1)  
    alert(result); 
    if (result) 
    { 
     alert('CONFIG 1 Loaded'); 
     configurationLoaded = true;  
    } 
    else 
    { 
     alert('CONFIG 1 does not exist.'); 
    } 
} 
// Load Configuration 2 
function config2() { 
    loadData(2)  
    alert(result); 
    if (result) 
    { 
     alert('CONFIG 2 Loaded'); 
     configurationLoaded = true;  
    } 
    else 
    { 
     alert('CONFIG 2 does not exist.'); 
    }    
} 
// Load Configuration 3 
function config3() { 
    loadData(3)  
    if (result) 
    { 
     alert('CONFIG 3 Loaded'); 
     configurationLoaded = true;  
    } 
    else 
    { 
     alert('CONFIG 3 does not exist.'); 
    }   
    result = false; 
} 
// Load Configuration 4 
function config4() {  
    loadData(4)  
    alert(result); 
    if (result) 
    { 
     alert('CONFIG 4 Loaded'); 
     configurationLoaded = true;  
    } 
    else 
    { 
     alert('CONFIG 4 does not exist.'); 
    }   
} 

3とCONFIGをCONFIGない注意と警告を表示ユーザーは設定ファイルが存在しないことを知っています。何らかの理由で、結果変数がリセットされ、動作しなくなります。

ご協力いただければ幸いです。

答えて

2

getが非同期に実行されるため、これは機能しません。したがって、基本的に結果変数は、result変数がコールバックに設定される前に警告される可能性が最も高くなります。

loadData(2); would still be loading. 
alert(result); this would be called before result is populated. 
関連する問題