Вы действительно не можете вернуть данные AJAX-запроса таким образом, поскольку он асинхронный.Это означает, что к тому времени, когда будет вызван успешный обратный вызов, ваш метод GetViewedItem
завершит выполнение.
Обычно вы продолжаете делать все, что вам нужно делать с данными AJAX в обратном вызове успеха, или вызываете методиз обратного вызова успеха, который соответственно обрабатывает данные.
handleViewedItem: (data) ->
// Do something now that the AJAX call is complete.
GetViewedItem: (foo) ->
$.ajax '/Foo/Bar/',
type: 'GET',
data: { id: $(foo).data('fooId') }
success: (data) ->
handleViewedItem data
Это, вероятно, одна из самых важных концепций, которую нужно понять при использовании JS и AJAX.