ajax は非同期であり、ajax リクエストが完了する前に返されるコードです。コードを再構築する方法はいくつかあります。
リクエストが終了すると実行されるコールバック関数を渡すことができます。
function getSearch(url, callback) {
$.getJSON(url, function(data) {
var out = '';
// btw what is numResults ??
for(var i = 0; i < numResults; i++) {
out += '<p class="hash_list">' + '<a href="http://www.twitter.com/' + data.results[i].from_user + '">' + data.results[i].from_user + '</a>: ' + data.results[i].text + '</p>';
}
if( typeof callback === 'function' ) callback( out );
});
}
次に、このような関数を使用します。
getSearch('test.php', function(out){
// here you can use the out variable
});
または、jquery deferreds を使用して promise を返し、deferred を解決するときに out 変数を引数の一部として渡すことができます。これが例です
function getSearch()
{
var deferred = $.Deferred();
$.getJSON(url, function(data) {
var out = '';
// btw what is numResults ??
for(var i = 0; i < numResults; i++) {
out += '<p class="hash_list">' + '<a href="http://www.twitter.com/' + data.results[i].from_user + '">' + data.results[i].from_user + '</a>: ' + data.results[i].text + '</p>';
}
deferred.resolve( out ); // resolve the request and pass in the out argument.
});
return deferred.promise(); // return a promise
}
$.when( getSearch() ).then(function( out ){ // the out variable will get passed in
console.log( out );
});