2015-04-27 2 views
-2

В скрипт-a.js У меня есть эта функция:Ajax Jquery: как результат возврата?

function callGetAjax(url,callback) { 
     $.get(url, {}, function(result) { 
      // this will call the callback and pass the result 
      callback(result); 
     }); 
} 

В скрипт-b.js я называю это:

var url = '/feed/location'; 
callGetAjax(url,function(result) 
{ 
    //console.log(result); <= of course this logs right 
    data = result; 
    return data; 
}); 
console.log(result); // <= ReferenceError: result is not defined 
console.log(data); // <= ReferenceError: data is not defined 

Я не хочу сделать async:false, но мне нужно, чтобы «экспорт «данные для его разработки. Спасибо.

+0

Похоже, вы не знаете, как работают обратные вызовы. Я предлагаю вам прочитать об этом. – Siguza

+1

Вы не можете вернуться из асинхронного метода. Это похоже на то, чтобы заказать пиццу онлайн и поесть, прежде чем она попадет в ваш дом. Вы не можете вернуться. Вся логика должна выполняться при выполнении обратного вызова. Поэтому вам нужно разбить свою логику на части. Часть до и после. – epascarello

+0

ОК, все понятно, спасибо @epascarello – sineverba

ответ

0

Ajax - это асинхронный инструмент, позволяющий использовать данные только внутри него. Итак, если вам нужно изменить dom с данными, вы должны сделать это напрямую:

var url = '/feed/location'; 
callGetAjax(url,function(result) 
{ 
    //console.log(result); <= of course this logs right 
    data = result; 
    $('#some_dome_item').html(data); 
}); 
Смежные вопросы