There are answers both complex and simple, really depending on your actual use case.
This simple answer is just to AJAX in a template that does what you want. There is no reason you can't have a template that looks like this:
template: my_template_group/ajax_entry.html
accessed url: my_template_group/ajax_entry/100
template content:
{exp:channel:entries
entry_id="{segment_3}"
limit="1"}
{if no_results}{redirect="404"}{/if}
<div class="ajaxed-content">
<h1>
{title}
</h1>
<p>
{my_custom_field}
</p>
</div>
{/exp:channel:entries}
And just AJAX that template in, then all of your logic will be in the JavaScript in your main listing template.
Now if you need something that is more akin to an API for Channel Entries, you are looking at crafting your own plugin/module. I can't tell if you specifically want to select certain fields to return or just need something simple. If your use case is small, you could just have 5 or so special templates like the one above and just AJAX the template you need when you need it.
And if you want, you can make a template return JSON or XML and consume the data that way if you need to do special stuff with it in JavaScript after it's been pulled in.