AJAX and do_shortcode

Ajax runs without a main WP_Query object and therefor all its APIs that are used to determine the type of page that is being displayed. The code which is responsible for outputting the result of the shortcode is probably checking for is_single() to be true so it will not add output to archive pages.

What you can do is to create a main query object, but it will probably be just faster to look at the code that generates the shortcode and find out if there is a simple function you can calll to do what you need.

A note about your general strategy – you are going to overload your sever with uncachable requests. If you have the CPU to spare or it is just one page, then there is probably no problem with that, but otherwise be very careful with what you do.