Итак, я пытаюсь прокрутить некоторые элементы и изменить текст, основанный на результате вызова ajax. проблема в том, что я не могу получить данные из обратного вызова ajax, и я не уверен, как именно привязать события к этому. Я получаю значение котировки акций, было бы неплохо, если бы я мог просто вернуть этот объект в предыдущую область, цикл совпадений, а затем сделать все манипуляции там.
$(function(){
var tweets = $('.tweet');
var symbol_pat = /(^|\s\$)([a-z]+\b)/gi;
$.each(tweets, function(){
var tweet_html = $(this).html();
tweet_html = tweet_html.replace(symbol_pat,function(){
var symbol = arguments[2];
var YAHOO_API_URL = 'http://query.yahooapis.com/v1/public/yql'
var format = 'json'
var query = 'select * from yahoo.finance.quotes where symbol in ("'+symbol+'")';
var env = "store://datatables.org/alltableswithkeys";
$.ajax({
'url':YAHOO_API_URL,
'async':false,
'method':'GET',
'data': {
'format':format,
'q':query,
'env':env
},
success: function(data){
var quote = data.query.results.quote;
var change = quote.Change;
var change_pct = quote.ChangeinPercent;
var quote_price = quote.LastTradePriceOnly;
var html_str = "";
if(change.indexOf("+") != -1){
html_str = '<span class="symWrap up">'+arguments[0]+'</span>';
}else{
html_str = '<span class="symWrap down">'+arguments[0]+'</span>';
}
tweet_html = arguments[0].replace(html_str);
$(this).html(tweet_html);
}
});
});
});
});
Все еще не уверен если я могу сделать что-то вроде quote = $ .get (request) .success (return data.results.quote;); с отложенным я могу просто установить async на false, так что он должен ждать окончания, мне просто нужно установить переменную во внешнюю область. – BillPull
async to false - очень плохая идея, так как браузер замерзнет на время. Вместо этого скажите 'var req = $ .get (request); req.success (function() {'... – robrich
ok. Хорошие примеры того, как вернуть переменную из ajax-вызова. – BillPull