In HTTP, you only get to send a response once.
You can't send most of the response and then have the server keep working in the background to send more data later.
But that's ok, because your next idea is correct. The way to get around this problem is to use javascript to have the client send more requests and therefore get more data.
Personally, I use AngularJS. Let's take a look at how it works.
- The user requests a page (an action).
- The webserver delivers the response as a single HTML page.
- An Angular controller loads additional data once the page has loaded.
- Angular renders the data to the page.
You'll need to do some reading up on how AJAX works and what the best way to go about this is. My approach is a little more involved than a jQuery hack, but it's much more maintainable and organised (not a big jQuery fan).