2011-01-10 6 views
3

私はjQueryの$に.get要求の結果に基づいて、関数の戻り値を決定しようとしています:

function checkResults(value) { 
     $.get("checkDuplicates.php", { 
      value: value 
     }, function(data) { 
      if(data == "0") { 
      //I want the "checkResults" function to return true if this is true 
      } else { 
      //I want the "checkResults" function to return false otherwise 
      } 
     }); 
    } 

は、これを行うための簡単な方法はありますか?

答えて

6

このようにすることはできません。 .get()は他のajaxメソッドと同様に非同期で実行されます(明示的に同期をとるように設定しない限り、これはあまりお勧めできません)。だから、おそらくあなたができることは、コールバックを渡すことです。

function checkResults(value, callback) { 
    $.get("checkDuplicates.php", { 
     value: value 
    }, function(data) { 
     if(data == "0") { 
     if(typeof callback === 'function') 
      callback.apply(this, [data]); 
     } else { 
     //I want the "checkResults" function to return false otherwise 
     } 
    } 
} 

checkResults(55, function(data) { 
    // do something 
}); 
3

いいえ、要求が完了すると実行されるコールバックを提供する必要があります。戻り値をコールバックに渡すことができます。コールバックは結果に作用する必要があります。

関連する問題